├── .idea ├── .name ├── copyright │ └── profiles_settings.xml ├── .gitignore ├── watcherTasks.xml ├── encodings.xml ├── codeStyles │ ├── codeStyleConfig.xml │ └── Project.xml ├── misc.xml ├── jsLibraryMappings.xml ├── copilot.data.migration.agent.xml ├── copilot.data.migration.ask.xml ├── copilot.data.migration.edit.xml ├── scopes │ └── Project_Source_Files.xml ├── copilot.data.migration.ask2agent.xml ├── vcs.xml ├── modules.xml ├── steam-user.iml └── inspectionProfiles │ └── Project_Default.xml ├── .npmrc ├── .npmignore ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── i-have-a-question.md │ ├── bug_report.md │ └── feature_request.md ├── resources ├── EPrivacyState.js ├── EClientUIMode.js ├── EPurchaseResult.js ├── EConnectionProtocol.js ├── EMachineIDType.js ├── default_options.js └── CurrencyData.js ├── enums ├── EControllerLayoutType.js ├── EAgreementType.js ├── EMessageReactionType.js ├── ECloudStoragePersistState.js ├── EChatRoomMessageReactionType.js ├── EContentCheckProvider.js ├── EKeyEscrowUsage.js ├── ESystemUpdateNotificationType.js ├── EStorageBlockFileSystemType.js ├── EAuthTokenPlatformType.js ├── EStreamVersion.js ├── ETokenRenewalType.js ├── EPublishedFileStorageSystem.js ├── ETextFilterSetting.js ├── EStreamBitrate.js ├── EStorageBlockContentType.js ├── EWorkshopFileAction.js ├── EChatRoomGroupType.js ├── EProtoExecutionSite.js ├── EStreamDataMessage.js ├── EVideoFormat.js ├── EBroadcastChatPermission.js ├── EChatRoomType.js ├── EMarketingMessageVisibility.js ├── ESteamPipeWorkType.js ├── EHIDDeviceLocation.js ├── EAudioFormat.js ├── EStreamDiscoveryMessage.js ├── ELogFileType.js ├── ESystemAudioDirection.js ├── EHDRToneMapOperator.js ├── EAppControllerSupportLevel.js ├── EContentDeltaChunkDataLocation.js ├── EGetGamesAlgorithm.js ├── EProvideDeckFeedbackPreference.js ├── ESessionPersistence.js ├── ESystemAudioPortDirection.js ├── ESystemFanControlMode.js ├── ESystemServiceState.js ├── ECPUGovernor.js ├── EChatInfoType.js ├── ELeaderboardSortMethod.js ├── ENotificationSetting.js ├── EColorProfile.js ├── EGameSearchAction.js ├── EPlaytestStatus.js ├── EProfileCustomizationStyle.js ├── EBatteryState.js ├── ESteamNetworkingSocketsCipher.js ├── ETradeOfferConfirmationMethod.js ├── EACState.js ├── EIntroducerRouting.js ├── ELeaderboardUploadScoreMethod.js ├── ELobbyStatus.js ├── EUserReviewScorePreference.js ├── EChatRoomJoinState.js ├── EInputMode.js ├── EPackageStatus.js ├── EUniverse.js ├── EChatFlags.js ├── EClanRank.js ├── ECloudPendingRemoteOperation.js ├── EMMSLobbyStatus.js ├── EPublishedFileInappropriateProvider.js ├── EStreamInterface.js ├── EStreamMouseWheelDirection.js ├── ESystemDisplayCompatibilityMode.js ├── EAuthSessionSecurityHistory.js ├── EJSRegisterMethodType.js ├── EAppAssociationType.js ├── EClientStatAggregateMethod.js ├── ECodecUsageReason.js ├── EValveIndexComponent.js ├── EContentHubDiscountFilterType.js ├── ELeaderboardDataRequest.js ├── EPublishedFileVisibility.js ├── ESplitScalingFilter.js ├── ESteamPipeOperationType.js ├── ESteamDeckCompatibilityFeedback.js ├── EStreamingDataType.js ├── ELeaderboardDisplayType.js ├── EStreamHostPlayAudioPreference.js ├── ECodecUsagePlatform.js ├── ELobbyType.js ├── EStorageDriveMediaType.js ├── EStreamAudioCodec.js ├── EStreamColorspace.js ├── EStreamDeviceFormFactor.js ├── E_STAR_GlyphWriteResult.js ├── EMouseMode.js ├── EStreamActivity.js ├── EGraphicsPerfOverlayLevel.js ├── EHIDDeviceDisconnectMethod.js ├── ESteamDeckCompatibilityCategory.js ├── EStreamChannel.js ├── EStreamQualityPreference.js ├── ELobbyFilterType.js ├── ENewsUpdateType.js ├── EScalingFilter.js ├── ESystemAudioPortType.js ├── EGetChannelsAlgorithm.js ├── EAppGamepadGyroTrackpadSupportLevel.js ├── ENewSteamAnnouncementState.js ├── ESplitScalingScaler.js ├── EStreamMouseButton.js ├── EBanContentCheckResult.js ├── EGPUPerformanceLevel.js ├── EChatRoomNotificationLevel.js ├── EMarketingMessageLookupType.js ├── EStreamP2PScope.js ├── EStoreItemType.js ├── EWorkshopFileType.js ├── ESDCardFormatStage.js ├── EServerFlags.js ├── EOSBranch.js ├── EStreamVideoCodec.js ├── EChatRoomGroupPermissions.js ├── EClientStat.js ├── EStoreCategoryType.js ├── EUpdaterType.js ├── EBroadcastImageType.js ├── ELobbyComparison.js ├── ESteamDeckCompatibilityResultDisplayType.js ├── EStreamTransport.js ├── EInternalAccountType.js ├── ERemoteClientService.js ├── EPlatformType.js ├── EStreamStatsMessage.js ├── EAuthTokenState.js ├── EPublishedFileInappropriateResult.js ├── EContentDescriptorID.js ├── EPersonaState.js ├── EUpdaterState.js ├── EChatRoomGroupRank.js ├── EClientSettingStore.js ├── EChatMemberStateChange.js ├── EStreamControllerConfigMsg.js ├── EPublishedFileRevision.js ├── ESteamNetworkingUDPMsgID.js ├── EStreamFramerateLimiter.js ├── ERegionCode.js ├── ERemoteStoragePlatform.js ├── EUCMFilePrivacyState.js ├── EClanRelationship.js ├── EPublishedFileForSaleStatus.js ├── EUdpPacketType.js ├── EActivationCodeClass.js ├── EDRMBlobDownloadType.js ├── EMarketingMessageFlags.js ├── EWorkshopEnumerationType.js ├── EAuthTokenRevokeAction.js ├── EMarketingMessageAssociationType.js ├── EMsgClanAccountFlags.js ├── EAuthSessionGuardType.js ├── EGameSearchResult.js ├── ELauncherType.js ├── EContentDownloadSourceType.js ├── ERemoteDeviceAuthorizationResult.js ├── ESteamTVContentTemplate.js ├── EAppUsageEvent.js ├── ESystemAudioChannel.js ├── EStreamFrameResult.js ├── EChatRoomMemberStateChange.js ├── EMarketingMessageType.js ├── EAccountType.js ├── EDepotFileFlag.js ├── EFriendRelationship.js ├── EAppCloudStatus.js ├── EChatRoomServerMsg.js ├── EUserReviewScore.js ├── ESteamReviewScore.js ├── EChatRoomServerMessage.js ├── ELicenseType.js ├── ETradeOfferState.js ├── EBluetoothDeviceType.js ├── EChatActionResult.js ├── EStoreAppType.js ├── ESystemIMType.js ├── EClanPermission.js ├── EExternalAccountType.js ├── EAuthSessionResponse.js ├── EChatRoomGroupAction.js ├── ETouchGesture.js ├── EVoiceCallState.js ├── EFriendFlags.js ├── EBroadcastWatchLocation.js ├── EChatRoomEnterResponse.js ├── EStreamGamepadInputType.js ├── EChatAction.js ├── ERemoteDeviceStreamingResult.js ├── EStoreDiscoveryQueueType.js ├── EChatEntryType.js ├── EAppType.js ├── EDenyReason.js ├── EPersonaStateFlag.js ├── EBillingType.js ├── EClientPersonaStateFlag.js ├── ECommunityItemClass.js ├── ERemoteClientBroadcastMsg.js ├── EStreamFrameEvent.js ├── EAppInfoSection.js ├── EChatPermission.js ├── ELicenseFlags.js ├── EFrameAccumulatedStat.js ├── EProfileCustomizationType.js ├── EDRMBlobDownloadErrorDetail.js └── ESteamNotificationType.js ├── protobufs ├── offline_ticket.proto ├── encrypted_app_ticket.proto ├── enums_productinfo.proto ├── common_base.proto ├── generated │ ├── offline_ticket.json │ └── encrypted_app_ticket.json ├── steammessages_workshop.steamclient.proto ├── steammessages_unified_base.steamclient.proto ├── steammessages_sitelicenseclient.proto ├── steammessages_gamenetworking.steamclient.proto ├── steammessages_lobbymatchmaking.steamclient.proto ├── steammessages_clientlanp2p.proto ├── steamnetworkingsockets_messages_certs.proto ├── steammessages_secrets.steamclient.proto ├── contenthubs.proto ├── steammessages_offline.steamclient.proto ├── steammessages_vac.steamclient.proto ├── clientmetrics.proto ├── steammessages_market.steamclient.proto ├── steammessages_timedtrial.steamclient.proto ├── steammessages_gamenetworkingui.proto └── content_manifest.proto ├── .editorconfig ├── components ├── connection_protocols │ └── base.js ├── 08-machineauth.js ├── classes │ ├── CMAuthTransport.js │ └── HandlerManager.js ├── store.js ├── 04-utility.js └── 05-filestorage.js ├── examples ├── licensesdumper.js ├── databasedownloader.js ├── lib │ └── collect_credentials.js └── tokendumper.js ├── LICENSE ├── .gitignore └── package.json /.idea/.name: -------------------------------------------------------------------------------- 1 | steam-user 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | node_modules/ 3 | test.js 4 | dev_data.json 5 | dev/ 6 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: DoctorMcKay 2 | custom: 'https://dev.doctormckay.com/donate/' 3 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /.idea/watcherTasks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/EPrivacyState.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | Private: 1, 3 | FriendsOnly: 2, 4 | Public: 3, 5 | 6 | 1: 'Private', 7 | 2: 'FriendsOnly', 8 | 3: 'Public' 9 | }; 10 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /resources/EClientUIMode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EClientUIMode 3 | */ 4 | module.exports = { 5 | None: 0, 6 | BigPicture: 1, 7 | Mobile: 2, 8 | Web: 3 9 | 10 | // I don't know how to get the VR thing 11 | }; 12 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /enums/EControllerLayoutType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EControllerLayoutType 3 | */ 4 | module.exports = { 5 | Phone: 0, 6 | Tablet: 1, 7 | 8 | // Value-to-name mapping for convenience 9 | 0: 'Phone', 10 | 1: 'Tablet', 11 | }; 12 | -------------------------------------------------------------------------------- /resources/EPurchaseResult.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | Unknown: -1, 3 | OK: 0, 4 | AlreadyOwned: 9, 5 | RegionLockedKey: 13, 6 | InvalidKey: 14, 7 | DuplicatedKey: 15, 8 | BaseGameRequired: 24, 9 | OnCooldown: 53 10 | }; 11 | -------------------------------------------------------------------------------- /.idea/copilot.data.migration.agent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/copilot.data.migration.ask.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/copilot.data.migration.edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/scopes/Project_Source_Files.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/copilot.data.migration.ask2agent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /protobufs/offline_ticket.proto: -------------------------------------------------------------------------------- 1 | message Offline_Ticket { 2 | optional bytes encrypted_ticket = 1; 3 | optional bytes signature = 2; 4 | optional int32 kdf1 = 3; 5 | optional bytes salt1 = 4; 6 | optional int32 kdf2 = 5; 7 | optional bytes salt2 = 6; 8 | } 9 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = tab 6 | indent_size = 4 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | insert_final_newline = false 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /enums/EAgreementType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EAgreementType 3 | * @readonly 4 | */ 5 | const EAgreementType = { 6 | Invalid: -1, 7 | GlobalSSA: 0, 8 | ChinaSSA: 1, 9 | 10 | // Value-to-name mapping for convenience 11 | '-1': 'Invalid', 12 | 0: 'GlobalSSA', 13 | 1: 'ChinaSSA', 14 | }; 15 | 16 | module.exports = EAgreementType; 17 | -------------------------------------------------------------------------------- /resources/EConnectionProtocol.js: -------------------------------------------------------------------------------- 1 | /** 2 | * What type of CM connection we should use. 3 | * @readonly 4 | * @enum {number} 5 | * @since 4.0.0 6 | */ 7 | module.exports = { 8 | /** Pick one automatically */ 9 | Auto: 0, 10 | 11 | /** TCP with Valve-crypto */ 12 | TCP: 1, 13 | 14 | /** WebSocket with TLS */ 15 | WebSocket: 2 16 | }; 17 | -------------------------------------------------------------------------------- /enums/EMessageReactionType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EMessageReactionType 3 | * @readonly 4 | */ 5 | const EMessageReactionType = { 6 | Invalid: 0, 7 | Emoticon: 1, 8 | Sticker: 2, 9 | 10 | // Value-to-name mapping for convenience 11 | 0: 'Invalid', 12 | 1: 'Emoticon', 13 | 2: 'Sticker', 14 | }; 15 | 16 | module.exports = EMessageReactionType; 17 | -------------------------------------------------------------------------------- /enums/ECloudStoragePersistState.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum ECloudStoragePersistState 3 | * @readonly 4 | */ 5 | const ECloudStoragePersistState = { 6 | Persisted: 0, 7 | Forgotten: 1, 8 | Deleted: 2, 9 | 10 | // Value-to-name mapping for convenience 11 | 0: 'Persisted', 12 | 1: 'Forgotten', 13 | 2: 'Deleted', 14 | }; 15 | 16 | module.exports = ECloudStoragePersistState; 17 | -------------------------------------------------------------------------------- /enums/EChatRoomMessageReactionType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EChatRoomMessageReactionType 3 | * @readonly 4 | */ 5 | const EChatRoomMessageReactionType = { 6 | Invalid: 0, 7 | Emoticon: 1, 8 | Sticker: 2, 9 | 10 | // Value-to-name mapping for convenience 11 | 0: 'Invalid', 12 | 1: 'Emoticon', 13 | 2: 'Sticker', 14 | }; 15 | 16 | module.exports = EChatRoomMessageReactionType; 17 | -------------------------------------------------------------------------------- /enums/EContentCheckProvider.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EContentCheckProvider 3 | * @readonly 4 | */ 5 | const EContentCheckProvider = { 6 | Invalid: 0, 7 | Google: 1, 8 | Amazon: 2, 9 | Local: 3, 10 | 11 | // Value-to-name mapping for convenience 12 | 0: 'Invalid', 13 | 1: 'Google', 14 | 2: 'Amazon', 15 | 3: 'Local', 16 | }; 17 | 18 | module.exports = EContentCheckProvider; 19 | -------------------------------------------------------------------------------- /protobufs/encrypted_app_ticket.proto: -------------------------------------------------------------------------------- 1 | option optimize_for = SPEED; 2 | option cc_generic_services = false; 3 | 4 | message EncryptedAppTicket { 5 | optional uint32 ticket_version_no = 1; 6 | optional uint32 crc_encryptedticket = 2; 7 | optional uint32 cb_encrypteduserdata = 3; 8 | optional uint32 cb_encrypted_appownershipticket = 4; 9 | optional bytes encrypted_ticket = 5; 10 | } 11 | -------------------------------------------------------------------------------- /enums/EKeyEscrowUsage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EKeyEscrowUsage = { 9 | "StreamingDevice": 0, 10 | 11 | // Value-to-name mapping for convenience 12 | "0": "StreamingDevice", 13 | }; 14 | 15 | module.exports = EKeyEscrowUsage; 16 | -------------------------------------------------------------------------------- /enums/ESystemUpdateNotificationType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum ESystemUpdateNotificationType 3 | * @readonly 4 | */ 5 | const ESystemUpdateNotificationType = { 6 | Invalid: 0, 7 | Available: 1, 8 | NeedsRestart: 2, 9 | 10 | // Value-to-name mapping for convenience 11 | 0: 'Invalid', 12 | 1: 'Available', 13 | 2: 'NeedsRestart', 14 | }; 15 | 16 | module.exports = ESystemUpdateNotificationType; 17 | -------------------------------------------------------------------------------- /enums/EStorageBlockFileSystemType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EStorageBlockFileSystemType 3 | * @readonly 4 | */ 5 | const EStorageBlockFileSystemType = { 6 | Invalid: 0, 7 | Unknown: 1, 8 | VFat: 2, 9 | Ext4: 3, 10 | 11 | // Value-to-name mapping for convenience 12 | 0: 'Invalid', 13 | 1: 'Unknown', 14 | 2: 'VFat', 15 | 3: 'Ext4', 16 | }; 17 | 18 | module.exports = EStorageBlockFileSystemType; 19 | -------------------------------------------------------------------------------- /enums/EAuthTokenPlatformType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EAuthTokenPlatformType 3 | * @readonly 4 | */ 5 | const EAuthTokenPlatformType = { 6 | Unknown: 0, 7 | SteamClient: 1, 8 | WebBrowser: 2, 9 | MobileApp: 3, 10 | 11 | // Value-to-name mapping for convenience 12 | 0: 'Unknown', 13 | 1: 'SteamClient', 14 | 2: 'WebBrowser', 15 | 3: 'MobileApp', 16 | }; 17 | 18 | module.exports = EAuthTokenPlatformType; 19 | -------------------------------------------------------------------------------- /enums/EStreamVersion.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamVersion = { 9 | "None": 0, 10 | "Current": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "None", 14 | "1": "Current", 15 | }; 16 | 17 | module.exports = EStreamVersion; 18 | -------------------------------------------------------------------------------- /enums/ETokenRenewalType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ETokenRenewalType = { 9 | "None": 0, 10 | "Allow": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "None", 14 | "1": "Allow", 15 | }; 16 | 17 | module.exports = ETokenRenewalType; 18 | -------------------------------------------------------------------------------- /enums/EPublishedFileStorageSystem.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EPublishedFileStorageSystem 3 | * @readonly 4 | */ 5 | const EPublishedFileStorageSystem = { 6 | Invalid: 0, 7 | LegacyCloud: 1, 8 | Depot: 2, 9 | UGCCloud: 3, 10 | 11 | // Value-to-name mapping for convenience 12 | 0: 'Invalid', 13 | 1: 'LegacyCloud', 14 | 2: 'Depot', 15 | 3: 'UGCCloud', 16 | }; 17 | 18 | module.exports = EPublishedFileStorageSystem; 19 | -------------------------------------------------------------------------------- /enums/ETextFilterSetting.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum ETextFilterSetting 3 | * @readonly 4 | */ 5 | const ETextFilterSetting = { 6 | SteamLabOptedOut: 0, 7 | Enabled: 1, 8 | EnabledAllowProfanity: 2, 9 | Disabled: 3, 10 | 11 | // Value-to-name mapping for convenience 12 | 0: 'SteamLabOptedOut', 13 | 1: 'Enabled', 14 | 2: 'EnabledAllowProfanity', 15 | 3: 'Disabled', 16 | }; 17 | 18 | module.exports = ETextFilterSetting; 19 | -------------------------------------------------------------------------------- /enums/EStreamBitrate.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamBitrate = { 9 | "Autodetect": -1, 10 | "Unlimited": 0, 11 | 12 | // Value-to-name mapping for convenience 13 | "-1": "Autodetect", 14 | "0": "Unlimited", 15 | }; 16 | 17 | module.exports = EStreamBitrate; 18 | -------------------------------------------------------------------------------- /enums/EStorageBlockContentType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EStorageBlockContentType 3 | * @readonly 4 | */ 5 | const EStorageBlockContentType = { 6 | Invalid: 0, 7 | Unknown: 1, 8 | FileSystem: 2, 9 | Crypto: 3, 10 | Raid: 4, 11 | 12 | // Value-to-name mapping for convenience 13 | 0: 'Invalid', 14 | 1: 'Unknown', 15 | 2: 'FileSystem', 16 | 3: 'Crypto', 17 | 4: 'Raid', 18 | }; 19 | 20 | module.exports = EStorageBlockContentType; 21 | -------------------------------------------------------------------------------- /enums/EWorkshopFileAction.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EWorkshopFileAction = { 9 | "Played": 0, 10 | "Completed": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "Played", 14 | "1": "Completed", 15 | }; 16 | 17 | module.exports = EWorkshopFileAction; 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/i-have-a-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: I have a question 3 | about: I want to ask a question about how to do something with the module 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | == DO NOT PROCEED TO OPEN THIS ISSUE == 11 | 12 | GitHub issues in this repository are for bugs and feature requests ONLY! Please use the dedicated forum instead at https://dev.doctormckay.com/forum/7-node-steam-user/ 13 | -------------------------------------------------------------------------------- /enums/EChatRoomGroupType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomGroupType = { 9 | "Default": 0, 10 | "Unmoderated": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "Default", 14 | "1": "Unmoderated", 15 | }; 16 | 17 | module.exports = EChatRoomGroupType; 18 | -------------------------------------------------------------------------------- /enums/EProtoExecutionSite.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EProtoExecutionSite = { 9 | "Unknown": 0, 10 | "SteamClient": 2, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "Unknown", 14 | "2": "SteamClient", 15 | }; 16 | 17 | module.exports = EProtoExecutionSite; 18 | -------------------------------------------------------------------------------- /enums/EStreamDataMessage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamDataMessage = { 9 | "DataPacket": 1, 10 | "DataLost": 2, 11 | 12 | // Value-to-name mapping for convenience 13 | "1": "DataPacket", 14 | "2": "DataLost", 15 | }; 16 | 17 | module.exports = EStreamDataMessage; 18 | -------------------------------------------------------------------------------- /enums/EVideoFormat.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EVideoFormat = { 9 | "None": 0, 10 | "YV12": 1, 11 | "Accel": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "YV12", 16 | "2": "Accel", 17 | }; 18 | 19 | module.exports = EVideoFormat; 20 | -------------------------------------------------------------------------------- /enums/EBroadcastChatPermission.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EBroadcastChatPermission = { 9 | "Public": 0, 10 | "OwnsApp": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "Public", 14 | "1": "OwnsApp", 15 | }; 16 | 17 | module.exports = EBroadcastChatPermission; 18 | -------------------------------------------------------------------------------- /enums/EChatRoomType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomType = { 9 | "Friend": 1, 10 | "MUC": 2, 11 | "Lobby": 3, 12 | 13 | // Value-to-name mapping for convenience 14 | "1": "Friend", 15 | "2": "MUC", 16 | "3": "Lobby", 17 | }; 18 | 19 | module.exports = EChatRoomType; 20 | -------------------------------------------------------------------------------- /enums/EMarketingMessageVisibility.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:13:56 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMarketingMessageVisibility = { 9 | "Beta": 1, 10 | "Public": 2, 11 | 12 | // Value-to-name mapping for convenience 13 | "1": "Beta", 14 | "2": "Public", 15 | }; 16 | 17 | module.exports = EMarketingMessageVisibility; 18 | -------------------------------------------------------------------------------- /enums/ESteamPipeWorkType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamPipeWorkType = { 9 | "Invalid": 0, 10 | "StageFromChunkStores": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "Invalid", 14 | "1": "StageFromChunkStores", 15 | }; 16 | 17 | module.exports = ESteamPipeWorkType; 18 | -------------------------------------------------------------------------------- /enums/EHIDDeviceLocation.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EHIDDeviceLocation = { 9 | "Local": 0, 10 | "Remote": 2, 11 | "Any": 3, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Local", 15 | "2": "Remote", 16 | "3": "Any", 17 | }; 18 | 19 | module.exports = EHIDDeviceLocation; 20 | -------------------------------------------------------------------------------- /enums/EAudioFormat.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAudioFormat = { 9 | "None": 0, 10 | "16BitLittleEndian": 1, 11 | "Float": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "16BitLittleEndian", 16 | "2": "Float", 17 | }; 18 | 19 | module.exports = EAudioFormat; 20 | -------------------------------------------------------------------------------- /enums/EStreamDiscoveryMessage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamDiscoveryMessage = { 9 | "PingRequest": 1, 10 | "PingResponse": 2, 11 | 12 | // Value-to-name mapping for convenience 13 | "1": "PingRequest", 14 | "2": "PingResponse", 15 | }; 16 | 17 | module.exports = EStreamDiscoveryMessage; 18 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /enums/ELogFileType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELogFileType = { 9 | "SystemBoot": 0, 10 | "SystemReset": 1, 11 | "SystemDebug": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "SystemBoot", 15 | "1": "SystemReset", 16 | "2": "SystemDebug", 17 | }; 18 | 19 | module.exports = ELogFileType; 20 | -------------------------------------------------------------------------------- /enums/ESystemAudioDirection.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemAudioDirection = { 9 | "Invalid": 0, 10 | "Input": 1, 11 | "Output": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Input", 16 | "2": "Output", 17 | }; 18 | 19 | module.exports = ESystemAudioDirection; 20 | -------------------------------------------------------------------------------- /enums/EHDRToneMapOperator.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EHDRToneMapOperator = { 9 | "Invalid": 0, 10 | "Uncharted": 1, 11 | "Reinhard": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Uncharted", 16 | "2": "Reinhard", 17 | }; 18 | 19 | module.exports = EHDRToneMapOperator; 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Report a bug or incorrect behavior in the module 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Describe the bug 11 | A clear and concise description of what the bug is. 12 | 13 | ## Versions 14 | What version of the module and what version of Node.js are you using? 15 | 16 | ## Screenshots and Error Logs 17 | If applicable, add screenshots and error logs to help explain your problem. 18 | -------------------------------------------------------------------------------- /.idea/steam-user.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /enums/EAppControllerSupportLevel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppControllerSupportLevel = { 9 | "None": 0, 10 | "Partial": 1, 11 | "Full": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "Partial", 16 | "2": "Full", 17 | }; 18 | 19 | module.exports = EAppControllerSupportLevel; 20 | -------------------------------------------------------------------------------- /enums/EContentDeltaChunkDataLocation.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EContentDeltaChunkDataLocation = { 9 | "InProtobuf": 0, 10 | "AfterProtobuf": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "InProtobuf", 14 | "1": "AfterProtobuf", 15 | }; 16 | 17 | module.exports = EContentDeltaChunkDataLocation; 18 | -------------------------------------------------------------------------------- /enums/EGetGamesAlgorithm.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGetGamesAlgorithm = { 9 | "Default": 1, 10 | "MostPlayed": 2, 11 | "PopularNew": 3, 12 | 13 | // Value-to-name mapping for convenience 14 | "1": "Default", 15 | "2": "MostPlayed", 16 | "3": "PopularNew", 17 | }; 18 | 19 | module.exports = EGetGamesAlgorithm; 20 | -------------------------------------------------------------------------------- /enums/EProvideDeckFeedbackPreference.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EProvideDeckFeedbackPreference = { 9 | "Unset": 0, 10 | "Yes": 1, 11 | "No": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Unset", 15 | "1": "Yes", 16 | "2": "No", 17 | }; 18 | 19 | module.exports = EProvideDeckFeedbackPreference; 20 | -------------------------------------------------------------------------------- /enums/ESessionPersistence.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESessionPersistence = { 9 | "Invalid": -1, 10 | "Ephemeral": 0, 11 | "Persistent": 1, 12 | 13 | // Value-to-name mapping for convenience 14 | "-1": "Invalid", 15 | "0": "Ephemeral", 16 | "1": "Persistent", 17 | }; 18 | 19 | module.exports = ESessionPersistence; 20 | -------------------------------------------------------------------------------- /enums/ESystemAudioPortDirection.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemAudioPortDirection = { 9 | "Invalid": 0, 10 | "Input": 1, 11 | "Output": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Input", 16 | "2": "Output", 17 | }; 18 | 19 | module.exports = ESystemAudioPortDirection; 20 | -------------------------------------------------------------------------------- /enums/ESystemFanControlMode.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:45 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemFanControlMode = { 9 | "Invalid": 0, 10 | "Disabled": 1, 11 | "Default": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Disabled", 16 | "2": "Default", 17 | }; 18 | 19 | module.exports = ESystemFanControlMode; 20 | -------------------------------------------------------------------------------- /enums/ESystemServiceState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemServiceState = { 9 | "Unavailable": 0, 10 | "Disabled": 1, 11 | "Enabled": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Unavailable", 15 | "1": "Disabled", 16 | "2": "Enabled", 17 | }; 18 | 19 | module.exports = ESystemServiceState; 20 | -------------------------------------------------------------------------------- /protobufs/enums_productinfo.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | 3 | option optimize_for = SPEED; 4 | option cc_generic_services = true; 5 | option (force_php_generation) = true; 6 | 7 | enum EContentDescriptorID { 8 | k_EContentDescriptor_FrequentNudityOrSexualContent = 1; 9 | k_EContentDescriptor_FrequentViolenceOrGore = 2; 10 | k_EContentDescriptor_StrongSexualContent = 3; 11 | k_EContentDescriptor_UNUSED_4 = 4; 12 | k_EContentDescriptor_AnyMatureContent = 5; 13 | } 14 | -------------------------------------------------------------------------------- /enums/ECPUGovernor.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ECPUGovernor = { 9 | "Invalid": 0, 10 | "Perf": 1, 11 | "Powersave": 2, 12 | "Manual": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Perf", 17 | "2": "Powersave", 18 | "3": "Manual", 19 | }; 20 | 21 | module.exports = ECPUGovernor; 22 | -------------------------------------------------------------------------------- /enums/EChatInfoType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatInfoType = { 9 | "StateChange": 1, 10 | "InfoUpdate": 2, 11 | "MemberLimitChange": 3, 12 | 13 | // Value-to-name mapping for convenience 14 | "1": "StateChange", 15 | "2": "InfoUpdate", 16 | "3": "MemberLimitChange", 17 | }; 18 | 19 | module.exports = EChatInfoType; 20 | -------------------------------------------------------------------------------- /enums/ELeaderboardSortMethod.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELeaderboardSortMethod = { 9 | "None": 0, 10 | "Ascending": 1, 11 | "Descending": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "Ascending", 16 | "2": "Descending", 17 | }; 18 | 19 | module.exports = ELeaderboardSortMethod; 20 | -------------------------------------------------------------------------------- /enums/ENotificationSetting.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ENotificationSetting = { 9 | "NotifyUseDefault": 0, 10 | "Always": 1, 11 | "Never": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "NotifyUseDefault", 15 | "1": "Always", 16 | "2": "Never", 17 | }; 18 | 19 | module.exports = ENotificationSetting; 20 | -------------------------------------------------------------------------------- /enums/EColorProfile.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EColorProfile = { 9 | "Invalid": 0, 10 | "Native": 1, 11 | "Standard": 2, 12 | "Vivid": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Native", 17 | "2": "Standard", 18 | "3": "Vivid", 19 | }; 20 | 21 | module.exports = EColorProfile; 22 | -------------------------------------------------------------------------------- /enums/EGameSearchAction.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGameSearchAction = { 9 | "None": 0, 10 | "Accept": 1, 11 | "Decline": 2, 12 | "Cancel": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "None", 16 | "1": "Accept", 17 | "2": "Decline", 18 | "3": "Cancel", 19 | }; 20 | 21 | module.exports = EGameSearchAction; 22 | -------------------------------------------------------------------------------- /enums/EPlaytestStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPlaytestStatus = { 9 | "None": 0, 10 | "Pending": 1, 11 | "Invited": 2, 12 | "Granted": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "None", 16 | "1": "Pending", 17 | "2": "Invited", 18 | "3": "Granted", 19 | }; 20 | 21 | module.exports = EPlaytestStatus; 22 | -------------------------------------------------------------------------------- /enums/EProfileCustomizationStyle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EProfileCustomizationStyle 3 | * @readonly 4 | */ 5 | const EProfileCustomizationStyle = { 6 | Default: 0, 7 | Selected: 1, 8 | Rarest: 2, 9 | MostRecent: 3, 10 | Random: 4, 11 | HighestRated: 5, 12 | 13 | // Value-to-name mapping for convenience 14 | 0: 'Default', 15 | 1: 'Selected', 16 | 2: 'Rarest', 17 | 3: 'MostRecent', 18 | 4: 'Random', 19 | 5: 'HighestRated', 20 | }; 21 | 22 | module.exports = EProfileCustomizationStyle; 23 | -------------------------------------------------------------------------------- /enums/EBatteryState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EBatteryState = { 9 | "Unknown": 0, 10 | "Discharging": 1, 11 | "Charging": 2, 12 | "Full": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "Discharging", 17 | "2": "Charging", 18 | "3": "Full", 19 | }; 20 | 21 | module.exports = EBatteryState; 22 | -------------------------------------------------------------------------------- /enums/ESteamNetworkingSocketsCipher.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamNetworkingSocketsCipher = { 9 | "INVALID": 0, 10 | "NULL": 1, 11 | "AES_256_GCM": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "INVALID", 15 | "1": "NULL", 16 | "2": "AES_256_GCM", 17 | }; 18 | 19 | module.exports = ESteamNetworkingSocketsCipher; 20 | -------------------------------------------------------------------------------- /enums/ETradeOfferConfirmationMethod.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ETradeOfferConfirmationMethod = { 9 | "Invalid": 0, 10 | "Email": 1, 11 | "MobileApp": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Email", 16 | "2": "MobileApp", 17 | }; 18 | 19 | module.exports = ETradeOfferConfirmationMethod; 20 | -------------------------------------------------------------------------------- /components/connection_protocols/base.js: -------------------------------------------------------------------------------- 1 | const EventEmitter = require('events').EventEmitter; 2 | 3 | let g_ConnectionId = 1; 4 | 5 | class BaseConnection extends EventEmitter { 6 | constructor(user) { 7 | super(); 8 | this.user = user; 9 | this.connectionId = g_ConnectionId++; 10 | } 11 | 12 | _debug(msg, verbose = false) { 13 | this.user.emit(verbose ? 'debug-verbose' : 'debug', `[${this.connectionType[0]}${this.connectionId}] ${msg}`); 14 | } 15 | } 16 | 17 | module.exports = BaseConnection; 18 | -------------------------------------------------------------------------------- /enums/EACState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EACState = { 9 | "Unknown": 0, 10 | "Disconnected": 1, 11 | "Connected": 2, 12 | "ConnectedSlow": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "Disconnected", 17 | "2": "Connected", 18 | "3": "ConnectedSlow", 19 | }; 20 | 21 | module.exports = EACState; 22 | -------------------------------------------------------------------------------- /enums/EIntroducerRouting.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EIntroducerRouting = { 9 | "FileShare": 0, // removed 10 | "P2PVoiceChat": 1, 11 | "P2PNetworking": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "FileShare", 15 | "1": "P2PVoiceChat", 16 | "2": "P2PNetworking", 17 | }; 18 | 19 | module.exports = EIntroducerRouting; 20 | -------------------------------------------------------------------------------- /enums/ELeaderboardUploadScoreMethod.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELeaderboardUploadScoreMethod = { 9 | "None": 0, 10 | "KeepBest": 1, 11 | "ForceUpdate": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "KeepBest", 16 | "2": "ForceUpdate", 17 | }; 18 | 19 | module.exports = ELeaderboardUploadScoreMethod; 20 | -------------------------------------------------------------------------------- /enums/ELobbyStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELobbyStatus = { 9 | "Invalid": 0, 10 | "Exists": 1, 11 | "DoesNotExist": 2, 12 | "NotAMember": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Exists", 17 | "2": "DoesNotExist", 18 | "3": "NotAMember", 19 | }; 20 | 21 | module.exports = ELobbyStatus; 22 | -------------------------------------------------------------------------------- /enums/EUserReviewScorePreference.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUserReviewScorePreference = { 9 | "Unset": 0, 10 | "IncludeAll": 1, 11 | "ExcludeBombs": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Unset", 15 | "1": "IncludeAll", 16 | "2": "ExcludeBombs", 17 | }; 18 | 19 | module.exports = EUserReviewScorePreference; 20 | -------------------------------------------------------------------------------- /enums/EChatRoomJoinState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomJoinState = { 9 | "Default": 0, 10 | "None": 1, 11 | "Joined": 2, 12 | "TestInvalid": 99, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Default", 16 | "1": "None", 17 | "2": "Joined", 18 | "99": "TestInvalid", 19 | }; 20 | 21 | module.exports = EChatRoomJoinState; 22 | -------------------------------------------------------------------------------- /enums/EInputMode.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EInputMode = { 9 | "Unknown": 0, 10 | "Mouse": 1, 11 | "Controller": 2, 12 | "MouseAndController": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "Mouse", 17 | "2": "Controller", 18 | "3": "MouseAndController", 19 | }; 20 | 21 | module.exports = EInputMode; 22 | -------------------------------------------------------------------------------- /enums/EPackageStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPackageStatus = { 9 | "Available": 0, 10 | "Preorder": 1, 11 | "Unavailable": 2, 12 | "Invalid": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Available", 16 | "1": "Preorder", 17 | "2": "Unavailable", 18 | "3": "Invalid", 19 | }; 20 | 21 | module.exports = EPackageStatus; 22 | -------------------------------------------------------------------------------- /enums/EUniverse.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUniverse = { 9 | "Invalid": 0, 10 | "Public": 1, 11 | "Beta": 2, 12 | "Internal": 3, 13 | "Dev": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "Public", 18 | "2": "Beta", 19 | "3": "Internal", 20 | "4": "Dev", 21 | }; 22 | 23 | module.exports = EUniverse; 24 | -------------------------------------------------------------------------------- /enums/EChatFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatFlags = { 9 | "Locked": 1, 10 | "InvisibleToFriends": 2, 11 | "Moderated": 4, 12 | "Unjoinable": 8, 13 | 14 | // Value-to-name mapping for convenience 15 | "1": "Locked", 16 | "2": "InvisibleToFriends", 17 | "4": "Moderated", 18 | "8": "Unjoinable", 19 | }; 20 | 21 | module.exports = EChatFlags; 22 | -------------------------------------------------------------------------------- /enums/EClanRank.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClanRank = { 9 | "None": 0, 10 | "Owner": 1, 11 | "Officer": 2, 12 | "Member": 3, 13 | "Moderator": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "None", 17 | "1": "Owner", 18 | "2": "Officer", 19 | "3": "Member", 20 | "4": "Moderator", 21 | }; 22 | 23 | module.exports = EClanRank; 24 | -------------------------------------------------------------------------------- /enums/ECloudPendingRemoteOperation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum ECloudPendingRemoteOperation 3 | * @readonly 4 | */ 5 | const ECloudPendingRemoteOperation = { 6 | None: 0, 7 | AppSessionActive: 1, 8 | UploadInProgress: 2, 9 | UploadPending: 3, 10 | AppSessionSuspended: 4, 11 | 12 | // Value-to-name mapping for convenience 13 | 0: 'None', 14 | 1: 'AppSessionActive', 15 | 2: 'UploadInProgress', 16 | 3: 'UploadPending', 17 | 4: 'AppSessionSuspended', 18 | }; 19 | 20 | module.exports = ECloudPendingRemoteOperation; 21 | -------------------------------------------------------------------------------- /enums/EMMSLobbyStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMMSLobbyStatus = { 9 | "Invalid": 0, 10 | "Exists": 1, 11 | "DoesNotExist": 2, 12 | "NotAMember": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Exists", 17 | "2": "DoesNotExist", 18 | "3": "NotAMember", 19 | }; 20 | 21 | module.exports = EMMSLobbyStatus; 22 | -------------------------------------------------------------------------------- /enums/EPublishedFileInappropriateProvider.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPublishedFileInappropriateProvider = { 9 | "Invalid": 0, 10 | "Google": 1, 11 | "Amazon": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "Google", 16 | "2": "Amazon", 17 | }; 18 | 19 | module.exports = EPublishedFileInappropriateProvider; 20 | -------------------------------------------------------------------------------- /enums/EStreamInterface.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamInterface = { 9 | "Default": 0, 10 | "RecentGames": 1, 11 | "BigPicture": 2, 12 | "Desktop": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Default", 16 | "1": "RecentGames", 17 | "2": "BigPicture", 18 | "3": "Desktop", 19 | }; 20 | 21 | module.exports = EStreamInterface; 22 | -------------------------------------------------------------------------------- /enums/EStreamMouseWheelDirection.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamMouseWheelDirection = { 9 | "Down": -120, 10 | "Left": 3, 11 | "Right": 4, 12 | "Up": 120, 13 | 14 | // Value-to-name mapping for convenience 15 | "-120": "Down", 16 | "3": "Left", 17 | "4": "Right", 18 | "120": "Up", 19 | }; 20 | 21 | module.exports = EStreamMouseWheelDirection; 22 | -------------------------------------------------------------------------------- /enums/ESystemDisplayCompatibilityMode.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemDisplayCompatibilityMode = { 9 | "Invalid": 0, 10 | "None": 1, 11 | "MinimalBandwith": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "None", 16 | "2": "MinimalBandwith", 17 | }; 18 | 19 | module.exports = ESystemDisplayCompatibilityMode; 20 | -------------------------------------------------------------------------------- /enums/EAuthSessionSecurityHistory.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAuthSessionSecurityHistory = { 9 | "Invalid": 0, 10 | "UsedPreviously": 1, 11 | "NoPriorHistory": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "Invalid", 15 | "1": "UsedPreviously", 16 | "2": "NoPriorHistory", 17 | }; 18 | 19 | module.exports = EAuthSessionSecurityHistory; 20 | -------------------------------------------------------------------------------- /enums/EJSRegisterMethodType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EJSRegisterMethodType = { 9 | "Invalid": 0, 10 | "Function": 1, 11 | "Callback": 2, 12 | "Promise": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Function", 17 | "2": "Callback", 18 | "3": "Promise", 19 | }; 20 | 21 | module.exports = EJSRegisterMethodType; 22 | -------------------------------------------------------------------------------- /enums/EAppAssociationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppAssociationType = { 9 | "Invalid": 0, 10 | "Publisher": 1, 11 | "Developer": 2, 12 | "Franchise": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "Publisher", 17 | "2": "Developer", 18 | "3": "Franchise", 19 | }; 20 | 21 | module.exports = EAppAssociationType; 22 | -------------------------------------------------------------------------------- /enums/EClientStatAggregateMethod.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClientStatAggregateMethod = { 9 | "LatestOnly": 0, 10 | "Sum": 1, 11 | "Event": 2, 12 | "Scalar": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "LatestOnly", 16 | "1": "Sum", 17 | "2": "Event", 18 | "3": "Scalar", 19 | }; 20 | 21 | module.exports = EClientStatAggregateMethod; 22 | -------------------------------------------------------------------------------- /enums/ECodecUsageReason.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ECodecUsageReason = { 9 | "Unknown": 0, 10 | "RemotePlay": 1, 11 | "Broadcasting": 2, 12 | "GameVideo": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "RemotePlay", 17 | "2": "Broadcasting", 18 | "3": "GameVideo", 19 | }; 20 | 21 | module.exports = ECodecUsageReason; 22 | -------------------------------------------------------------------------------- /enums/EValveIndexComponent.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EValveIndexComponent = { 9 | "Unknown": 0, 10 | "HMD": 1, 11 | "LeftKnuckle": 2, 12 | "RightKnuckle": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "HMD", 17 | "2": "LeftKnuckle", 18 | "3": "RightKnuckle", 19 | }; 20 | 21 | module.exports = EValveIndexComponent; 22 | -------------------------------------------------------------------------------- /enums/EContentHubDiscountFilterType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EContentHubDiscountFilterType = { 9 | "None": 0, 10 | "DiscountsOnly": 1, 11 | "PrioritizeDiscounts": 2, 12 | 13 | // Value-to-name mapping for convenience 14 | "0": "None", 15 | "1": "DiscountsOnly", 16 | "2": "PrioritizeDiscounts", 17 | }; 18 | 19 | module.exports = EContentHubDiscountFilterType; 20 | -------------------------------------------------------------------------------- /enums/ELeaderboardDataRequest.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELeaderboardDataRequest = { 9 | "Global": 0, 10 | "GlobalAroundUser": 1, 11 | "Friends": 2, 12 | "Users": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Global", 16 | "1": "GlobalAroundUser", 17 | "2": "Friends", 18 | "3": "Users", 19 | }; 20 | 21 | module.exports = ELeaderboardDataRequest; 22 | -------------------------------------------------------------------------------- /enums/EPublishedFileVisibility.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Mon Sep 02 2024 23:48:07 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPublishedFileVisibility = { 9 | "Public": 0, 10 | "FriendsOnly": 1, 11 | "Private": 2, 12 | "Unlisted": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Public", 16 | "1": "FriendsOnly", 17 | "2": "Private", 18 | "3": "Unlisted", 19 | }; 20 | 21 | module.exports = EPublishedFileVisibility; 22 | -------------------------------------------------------------------------------- /enums/ESplitScalingFilter.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESplitScalingFilter = { 9 | "Invalid": 0, 10 | "Linear": 1, 11 | "Nearest": 2, 12 | "FSR": 3, 13 | "NIS": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "Linear", 18 | "2": "Nearest", 19 | "3": "FSR", 20 | "4": "NIS", 21 | }; 22 | 23 | module.exports = ESplitScalingFilter; 24 | -------------------------------------------------------------------------------- /enums/ESteamPipeOperationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamPipeOperationType = { 9 | "Invalid": 0, 10 | "DecryptCPU": 1, 11 | "DiskRead": 2, 12 | "DiskWrite": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "DecryptCPU", 17 | "2": "DiskRead", 18 | "3": "DiskWrite", 19 | }; 20 | 21 | module.exports = ESteamPipeOperationType; 22 | -------------------------------------------------------------------------------- /enums/ESteamDeckCompatibilityFeedback.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamDeckCompatibilityFeedback = { 9 | "Unset": 0, 10 | "Agree": 1, 11 | "Disagree": 2, 12 | "Ignore": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unset", 16 | "1": "Agree", 17 | "2": "Disagree", 18 | "3": "Ignore", 19 | }; 20 | 21 | module.exports = ESteamDeckCompatibilityFeedback; 22 | -------------------------------------------------------------------------------- /enums/EStreamingDataType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamingDataType = { 9 | "AudioData": 0, 10 | "VideoData": 1, 11 | "MicrophoneData": 2, 12 | "NeptuneData": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "AudioData", 16 | "1": "VideoData", 17 | "2": "MicrophoneData", 18 | "3": "NeptuneData", 19 | }; 20 | 21 | module.exports = EStreamingDataType; 22 | -------------------------------------------------------------------------------- /enums/ELeaderboardDisplayType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELeaderboardDisplayType = { 9 | "None": 0, 10 | "Numeric": 1, 11 | "TimeSeconds": 2, 12 | "TimeMilliSeconds": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "None", 16 | "1": "Numeric", 17 | "2": "TimeSeconds", 18 | "3": "TimeMilliSeconds", 19 | }; 20 | 21 | module.exports = ELeaderboardDisplayType; 22 | -------------------------------------------------------------------------------- /enums/EStreamHostPlayAudioPreference.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamHostPlayAudioPreference = { 9 | "k_EStreamHostPlayAudioDefault": 0, 10 | "k_EStreamHostPlayAudioAlways": 1, 11 | 12 | // Value-to-name mapping for convenience 13 | "0": "k_EStreamHostPlayAudioDefault", 14 | "1": "k_EStreamHostPlayAudioAlways", 15 | }; 16 | 17 | module.exports = EStreamHostPlayAudioPreference; 18 | -------------------------------------------------------------------------------- /enums/ECodecUsagePlatform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ECodecUsagePlatform = { 9 | "Unknown": 0, 10 | "Windows": 1, 11 | "MacOS": 2, 12 | "Linux": 3, 13 | "SteamDeck": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Unknown", 17 | "1": "Windows", 18 | "2": "MacOS", 19 | "3": "Linux", 20 | "4": "SteamDeck", 21 | }; 22 | 23 | module.exports = ECodecUsagePlatform; 24 | -------------------------------------------------------------------------------- /enums/ELobbyType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELobbyType = { 9 | "Private": 0, 10 | "FriendsOnly": 1, 11 | "Public": 2, 12 | "Invisible": 3, 13 | "PrivateUnique": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Private", 17 | "1": "FriendsOnly", 18 | "2": "Public", 19 | "3": "Invisible", 20 | "4": "PrivateUnique", 21 | }; 22 | 23 | module.exports = ELobbyType; 24 | -------------------------------------------------------------------------------- /enums/EStorageDriveMediaType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStorageDriveMediaType = { 9 | "Invalid": 0, 10 | "Unknown": 1, 11 | "HDD": 2, 12 | "SSD": 3, 13 | "Removable": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "Unknown", 18 | "2": "HDD", 19 | "3": "SSD", 20 | "4": "Removable", 21 | }; 22 | 23 | module.exports = EStorageDriveMediaType; 24 | -------------------------------------------------------------------------------- /enums/EStreamAudioCodec.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamAudioCodec = { 9 | "None": 0, 10 | "Raw": 1, 11 | "Vorbis": 2, 12 | "Opus": 3, 13 | "MP3": 4, 14 | "AAC": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "None", 18 | "1": "Raw", 19 | "2": "Vorbis", 20 | "3": "Opus", 21 | "4": "MP3", 22 | "5": "AAC", 23 | }; 24 | 25 | module.exports = EStreamAudioCodec; 26 | -------------------------------------------------------------------------------- /enums/EStreamColorspace.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamColorspace = { 9 | "Unknown": 0, 10 | "BT601": 1, 11 | "BT601_Full": 2, 12 | "BT709": 3, 13 | "BT709_Full": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Unknown", 17 | "1": "BT601", 18 | "2": "BT601_Full", 19 | "3": "BT709", 20 | "4": "BT709_Full", 21 | }; 22 | 23 | module.exports = EStreamColorspace; 24 | -------------------------------------------------------------------------------- /enums/EStreamDeviceFormFactor.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamDeviceFormFactor = { 9 | "Unknown": 0, 10 | "Phone": 1, 11 | "Tablet": 2, 12 | "Computer": 3, 13 | "TV": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Unknown", 17 | "1": "Phone", 18 | "2": "Tablet", 19 | "3": "Computer", 20 | "4": "TV", 21 | }; 22 | 23 | module.exports = EStreamDeviceFormFactor; 24 | -------------------------------------------------------------------------------- /enums/E_STAR_GlyphWriteResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const E_STAR_GlyphWriteResult = { 9 | "Success": 0, 10 | "InvalidMessage": 1, 11 | "InvalidJSON": 2, 12 | "SQLError": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Success", 16 | "1": "InvalidMessage", 17 | "2": "InvalidJSON", 18 | "3": "SQLError", 19 | }; 20 | 21 | module.exports = E_STAR_GlyphWriteResult; 22 | -------------------------------------------------------------------------------- /enums/EMouseMode.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMouseMode = { 9 | "Unknown": 0, 10 | "RelativeCursor": 1, 11 | "AbsoluteCursor": 2, 12 | "Touch": 3, 13 | "Relative": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Unknown", 17 | "1": "RelativeCursor", 18 | "2": "AbsoluteCursor", 19 | "3": "Touch", 20 | "4": "Relative", 21 | }; 22 | 23 | module.exports = EMouseMode; 24 | -------------------------------------------------------------------------------- /enums/EStreamActivity.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:33:23 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum EStreamActivity 6 | * @readonly 7 | */ 8 | const EStreamActivity = { 9 | "Idle": 1, 10 | "Game": 2, 11 | "Desktop": 3, 12 | "SecureDesktop": 4, 13 | "Music": 5, 14 | 15 | // Value-to-name mapping for convenience 16 | "1": "Idle", 17 | "2": "Game", 18 | "3": "Desktop", 19 | "4": "SecureDesktop", 20 | "5": "Music", 21 | }; 22 | 23 | module.exports = EStreamActivity; 24 | -------------------------------------------------------------------------------- /enums/EGraphicsPerfOverlayLevel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGraphicsPerfOverlayLevel = { 9 | "Hidden": 0, 10 | "Basic": 1, 11 | "Medium": 2, 12 | "Full": 3, 13 | "Minimal": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Hidden", 17 | "1": "Basic", 18 | "2": "Medium", 19 | "3": "Full", 20 | "4": "Minimal", 21 | }; 22 | 23 | module.exports = EGraphicsPerfOverlayLevel; 24 | -------------------------------------------------------------------------------- /enums/EHIDDeviceDisconnectMethod.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EHIDDeviceDisconnectMethod = { 9 | "Unknown": 0, 10 | "Bluetooth": 1, 11 | "FeatureReport": 2, 12 | "OutputReport": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "Bluetooth", 17 | "2": "FeatureReport", 18 | "3": "OutputReport", 19 | }; 20 | 21 | module.exports = EHIDDeviceDisconnectMethod; 22 | -------------------------------------------------------------------------------- /enums/ESteamDeckCompatibilityCategory.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamDeckCompatibilityCategory = { 9 | "Unknown": 0, 10 | "Unsupported": 1, 11 | "Playable": 2, 12 | "Verified": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Unknown", 16 | "1": "Unsupported", 17 | "2": "Playable", 18 | "3": "Verified", 19 | }; 20 | 21 | module.exports = ESteamDeckCompatibilityCategory; 22 | -------------------------------------------------------------------------------- /enums/EStreamChannel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamChannel = { 9 | "Invalid": -1, 10 | "Discovery": 0, 11 | "Control": 1, 12 | "Stats": 2, 13 | "DataChannelStart": 3, 14 | 15 | // Value-to-name mapping for convenience 16 | "-1": "Invalid", 17 | "0": "Discovery", 18 | "1": "Control", 19 | "2": "Stats", 20 | "3": "DataChannelStart", 21 | }; 22 | 23 | module.exports = EStreamChannel; 24 | -------------------------------------------------------------------------------- /enums/EStreamQualityPreference.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:33:23 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum EStreamQualityPreference 6 | * @readonly 7 | */ 8 | const EStreamQualityPreference = { 9 | "Automatic": -1, 10 | "Fast": 1, 11 | "Balanced": 2, 12 | "Beautiful": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "-1": "Automatic", 16 | "1": "Fast", 17 | "2": "Balanced", 18 | "3": "Beautiful", 19 | }; 20 | 21 | module.exports = EStreamQualityPreference; 22 | -------------------------------------------------------------------------------- /enums/ELobbyFilterType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELobbyFilterType = { 9 | "String": 0, 10 | "Numerical": 1, 11 | "SlotsAvailable": 2, 12 | "NearValue": 3, 13 | "Distance": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "String", 17 | "1": "Numerical", 18 | "2": "SlotsAvailable", 19 | "3": "NearValue", 20 | "4": "Distance", 21 | }; 22 | 23 | module.exports = ELobbyFilterType; 24 | -------------------------------------------------------------------------------- /enums/ENewsUpdateType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ENewsUpdateType = { 9 | "AppNews": 0, 10 | "SteamAds": 1, 11 | "SteamNews": 2, 12 | "CDDBUpdate": 3, 13 | "ClientUpdate": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "AppNews", 17 | "1": "SteamAds", 18 | "2": "SteamNews", 19 | "3": "CDDBUpdate", 20 | "4": "ClientUpdate", 21 | }; 22 | 23 | module.exports = ENewsUpdateType; 24 | -------------------------------------------------------------------------------- /enums/EScalingFilter.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EScalingFilter = { 9 | "Invalid": 0, 10 | "FSR": 1, 11 | "Nearest": 2, 12 | "Integer": 3, 13 | "Linear": 4, 14 | "NIS": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Invalid", 18 | "1": "FSR", 19 | "2": "Nearest", 20 | "3": "Integer", 21 | "4": "Linear", 22 | "5": "NIS", 23 | }; 24 | 25 | module.exports = EScalingFilter; 26 | -------------------------------------------------------------------------------- /enums/ESystemAudioPortType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemAudioPortType = { 9 | "Invalid": 0, 10 | "Unknown": 1, 11 | "Audio32f": 2, 12 | "Midi8b": 3, 13 | "Video32RGBA": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "Unknown", 18 | "2": "Audio32f", 19 | "3": "Midi8b", 20 | "4": "Video32RGBA", 21 | }; 22 | 23 | module.exports = ESystemAudioPortType; 24 | -------------------------------------------------------------------------------- /enums/EGetChannelsAlgorithm.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGetChannelsAlgorithm = { 9 | "Default": 1, 10 | "Friends": 2, 11 | "Featured": 3, 12 | "Developer": 4, 13 | "Following": 5, 14 | 15 | // Value-to-name mapping for convenience 16 | "1": "Default", 17 | "2": "Friends", 18 | "3": "Featured", 19 | "4": "Developer", 20 | "5": "Following", 21 | }; 22 | 23 | module.exports = EGetChannelsAlgorithm; 24 | -------------------------------------------------------------------------------- /enums/EAppGamepadGyroTrackpadSupportLevel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppGamepadGyroTrackpadSupportLevel = { 9 | "Unknown": -1, 10 | "NoGamepad": 0, 11 | "Gamepad": 1, 12 | "Simultaneous": 2, 13 | 14 | // Value-to-name mapping for convenience 15 | "-1": "Unknown", 16 | "0": "NoGamepad", 17 | "1": "Gamepad", 18 | "2": "Simultaneous", 19 | }; 20 | 21 | module.exports = EAppGamepadGyroTrackpadSupportLevel; 22 | -------------------------------------------------------------------------------- /enums/ENewSteamAnnouncementState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ENewSteamAnnouncementState = { 9 | "Invalid": 0, 10 | "AllRead": 1, 11 | "NewAnnouncement": 2, 12 | "FeaturedAnnouncement": 3, 13 | 14 | // Value-to-name mapping for convenience 15 | "0": "Invalid", 16 | "1": "AllRead", 17 | "2": "NewAnnouncement", 18 | "3": "FeaturedAnnouncement", 19 | }; 20 | 21 | module.exports = ENewSteamAnnouncementState; 22 | -------------------------------------------------------------------------------- /enums/ESplitScalingScaler.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESplitScalingScaler = { 9 | "Invalid": 0, 10 | "Auto": 1, 11 | "Integer": 2, 12 | "Fit": 3, 13 | "Fill": 4, 14 | "Stretch": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Invalid", 18 | "1": "Auto", 19 | "2": "Integer", 20 | "3": "Fit", 21 | "4": "Fill", 22 | "5": "Stretch", 23 | }; 24 | 25 | module.exports = ESplitScalingScaler; 26 | -------------------------------------------------------------------------------- /enums/EStreamMouseButton.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamMouseButton = { 9 | "Left": 1, 10 | "Right": 2, 11 | "Middle": 16, 12 | "X1": 32, 13 | "X2": 64, 14 | "Unknown": 4096, 15 | 16 | // Value-to-name mapping for convenience 17 | "1": "Left", 18 | "2": "Right", 19 | "16": "Middle", 20 | "32": "X1", 21 | "64": "X2", 22 | "4096": "Unknown", 23 | }; 24 | 25 | module.exports = EStreamMouseButton; 26 | -------------------------------------------------------------------------------- /enums/EBanContentCheckResult.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EBanContentCheckResult 3 | * @readonly 4 | */ 5 | const EBanContentCheckResult = { 6 | NotScanned: 0, 7 | Reset: 1, 8 | NeedsChecking: 2, 9 | VeryUnlikely: 5, 10 | Unlikely: 30, 11 | Possible: 50, 12 | Likely: 75, 13 | VeryLikely: 100, 14 | 15 | // Value-to-name mapping for convenience 16 | 0: 'NotScanned', 17 | 1: 'Reset', 18 | 2: 'NeedsChecking', 19 | 5: 'VeryUnlikely', 20 | 30: 'Unlikely', 21 | 50: 'Possible', 22 | 75: 'Likely', 23 | 100: 'VeryLikely', 24 | }; 25 | 26 | module.exports = EBanContentCheckResult; 27 | -------------------------------------------------------------------------------- /enums/EGPUPerformanceLevel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGPUPerformanceLevel = { 9 | "Invalid": 0, 10 | "Auto": 1, 11 | "Manual": 2, 12 | "Low": 3, 13 | "High": 4, 14 | "Profiling": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Invalid", 18 | "1": "Auto", 19 | "2": "Manual", 20 | "3": "Low", 21 | "4": "High", 22 | "5": "Profiling", 23 | }; 24 | 25 | module.exports = EGPUPerformanceLevel; 26 | -------------------------------------------------------------------------------- /enums/EChatRoomNotificationLevel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomNotificationLevel = { 9 | "Invalid": 0, 10 | "None": 1, 11 | "MentionMe": 2, 12 | "MentionAll": 3, 13 | "AllMessages": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "None", 18 | "2": "MentionMe", 19 | "3": "MentionAll", 20 | "4": "AllMessages", 21 | }; 22 | 23 | module.exports = EChatRoomNotificationLevel; 24 | -------------------------------------------------------------------------------- /enums/EMarketingMessageLookupType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:13:56 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMarketingMessageLookupType = { 9 | "Invalid": 0, 10 | "ByGID": 1, 11 | "Active": 2, 12 | "ByTitleWithType": 3, 13 | "ByGIDList": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invalid", 17 | "1": "ByGID", 18 | "2": "Active", 19 | "3": "ByTitleWithType", 20 | "4": "ByGIDList", 21 | }; 22 | 23 | module.exports = EMarketingMessageLookupType; 24 | -------------------------------------------------------------------------------- /enums/EStreamP2PScope.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:33:23 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum EStreamP2PScope 6 | * @readonly 7 | */ 8 | const EStreamP2PScope = { 9 | "Unknown": 0, // obsolete 10 | "Automatic": 0, 11 | "Disabled": 1, 12 | "OnlyMe": 2, 13 | "Friends": 3, 14 | "Everyone": 4, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Automatic", 18 | "1": "Disabled", 19 | "2": "OnlyMe", 20 | "3": "Friends", 21 | "4": "Everyone", 22 | }; 23 | 24 | module.exports = EStreamP2PScope; 25 | -------------------------------------------------------------------------------- /enums/EStoreItemType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStoreItemType = { 9 | "Invalid": -1, 10 | "App": 0, 11 | "Package": 1, 12 | "Bundle": 2, 13 | "Mtx": 3, 14 | "Tag": 4, 15 | "Creator": 5, 16 | 17 | // Value-to-name mapping for convenience 18 | "-1": "Invalid", 19 | "0": "App", 20 | "1": "Package", 21 | "2": "Bundle", 22 | "3": "Mtx", 23 | "4": "Tag", 24 | "5": "Creator", 25 | }; 26 | 27 | module.exports = EStoreItemType; 28 | -------------------------------------------------------------------------------- /enums/EWorkshopFileType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Mon Sep 02 2024 23:48:07 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EWorkshopFileType = { 9 | "First": 0, 10 | "SteamworksAccessInvite": 13, 11 | "SteamVideo": 14, 12 | "GameManagedItem": 15, 13 | "Clip": 16, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "First", 17 | "13": "SteamworksAccessInvite", 18 | "14": "SteamVideo", 19 | "15": "GameManagedItem", 20 | "16": "Clip", 21 | }; 22 | 23 | module.exports = EWorkshopFileType; 24 | -------------------------------------------------------------------------------- /enums/ESDCardFormatStage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESDCardFormatStage = { 9 | "Invalid": 0, 10 | "Starting": 1, 11 | "Testing": 2, 12 | "Rescuing": 3, 13 | "Formatting": 4, 14 | "Finalizing": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Invalid", 18 | "1": "Starting", 19 | "2": "Testing", 20 | "3": "Rescuing", 21 | "4": "Formatting", 22 | "5": "Finalizing", 23 | }; 24 | 25 | module.exports = ESDCardFormatStage; 26 | -------------------------------------------------------------------------------- /enums/EServerFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EServerFlags = { 9 | "None": 0, 10 | "Active": 1, 11 | "Secure": 2, 12 | "Dedicated": 4, 13 | "Linux": 8, 14 | "Passworded": 16, 15 | "Private": 32, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "None", 19 | "1": "Active", 20 | "2": "Secure", 21 | "4": "Dedicated", 22 | "8": "Linux", 23 | "16": "Passworded", 24 | "32": "Private", 25 | }; 26 | 27 | module.exports = EServerFlags; 28 | -------------------------------------------------------------------------------- /enums/EOSBranch.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EOSBranch = { 9 | "Unknown": 0, 10 | "Release": 1, 11 | "ReleaseCandidate": 2, 12 | "Beta": 3, 13 | "BetaCandidate": 4, 14 | "Main": 5, 15 | "Staging": 6, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "Unknown", 19 | "1": "Release", 20 | "2": "ReleaseCandidate", 21 | "3": "Beta", 22 | "4": "BetaCandidate", 23 | "5": "Main", 24 | "6": "Staging", 25 | }; 26 | 27 | module.exports = EOSBranch; 28 | -------------------------------------------------------------------------------- /enums/EStreamVideoCodec.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamVideoCodec = { 9 | "None": 0, 10 | "Raw": 1, 11 | "VP8": 2, 12 | "VP9": 3, 13 | "H264": 4, 14 | "HEVC": 5, 15 | "ORBX1": 6, 16 | "ORBX2": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "None", 20 | "1": "Raw", 21 | "2": "VP8", 22 | "3": "VP9", 23 | "4": "H264", 24 | "5": "HEVC", 25 | "6": "ORBX1", 26 | "7": "ORBX2", 27 | }; 28 | 29 | module.exports = EStreamVideoCodec; 30 | -------------------------------------------------------------------------------- /enums/EChatRoomGroupPermissions.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomGroupPermissions = { 9 | "Default": 0, 10 | "Valid": 1, 11 | "CanInvite": 2, 12 | "CanKick": 4, 13 | "CanBan": 8, 14 | "CanAdminChannel": 16, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Default", 18 | "1": "Valid", 19 | "2": "CanInvite", 20 | "4": "CanKick", 21 | "8": "CanBan", 22 | "16": "CanAdminChannel", 23 | }; 24 | 25 | module.exports = EChatRoomGroupPermissions; 26 | -------------------------------------------------------------------------------- /resources/EMachineIDType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * What type of machine ID SteamUser will use to logon to Steam with. 3 | * @readonly 4 | * @enum {number} 5 | * @since 1.7.0 6 | */ 7 | module.exports = { 8 | /** No machine ID will be provided to Steam */ 9 | None: 1, 10 | 11 | /** A randomly-generated machine ID will be created on each logon */ 12 | AlwaysRandom: 2, 13 | 14 | /** A machine ID will be generated from your account's username */ 15 | AccountNameGenerated: 3, 16 | 17 | /** A random machine ID will be generated and saved to the {dataDirectory}, and will be used for future logons */ 18 | PersistentRandom: 4 19 | }; 20 | -------------------------------------------------------------------------------- /enums/EClientStat.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClientStat = { 9 | "P2PConnectionsUDP": 0, 10 | "P2PConnectionsRelay": 1, 11 | "P2PGameConnections": 2, 12 | "P2PVoiceConnections": 3, 13 | "BytesDownloaded": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "P2PConnectionsUDP", 17 | "1": "P2PConnectionsRelay", 18 | "2": "P2PGameConnections", 19 | "3": "P2PVoiceConnections", 20 | "4": "BytesDownloaded", 21 | }; 22 | 23 | module.exports = EClientStat; 24 | -------------------------------------------------------------------------------- /enums/EStoreCategoryType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStoreCategoryType = { 9 | "Category": 0, 10 | "SupportedPlayers": 1, 11 | "Feature": 2, 12 | "ControllerSupport": 3, 13 | "CloudGaming": 4, 14 | "MAX": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Category", 18 | "1": "SupportedPlayers", 19 | "2": "Feature", 20 | "3": "ControllerSupport", 21 | "4": "CloudGaming", 22 | "5": "MAX", 23 | }; 24 | 25 | module.exports = EStoreCategoryType; 26 | -------------------------------------------------------------------------------- /enums/EUpdaterType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUpdaterType = { 9 | "Invalid": 0, 10 | "Client": 1, 11 | "OS": 2, 12 | "BIOS": 3, 13 | "Aggregated": 4, 14 | "Test1": 5, 15 | "Test2": 6, 16 | "Dummy": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Invalid", 20 | "1": "Client", 21 | "2": "OS", 22 | "3": "BIOS", 23 | "4": "Aggregated", 24 | "5": "Test1", 25 | "6": "Test2", 26 | "7": "Dummy", 27 | }; 28 | 29 | module.exports = EUpdaterType; 30 | -------------------------------------------------------------------------------- /enums/EBroadcastImageType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EBroadcastImageType = { 9 | "None": 0, 10 | "Offline": 1, 11 | "Standby": 2, 12 | "Avatar": 3, 13 | "Summary": 4, 14 | "Background": 5, 15 | "Emoticon": 6, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "None", 19 | "1": "Offline", 20 | "2": "Standby", 21 | "3": "Avatar", 22 | "4": "Summary", 23 | "5": "Background", 24 | "6": "Emoticon", 25 | }; 26 | 27 | module.exports = EBroadcastImageType; 28 | -------------------------------------------------------------------------------- /enums/ELobbyComparison.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELobbyComparison = { 9 | "EqualToOrLessThan": -2, 10 | "LessThan": -1, 11 | "Equal": 0, 12 | "GreaterThan": 1, 13 | "EqualToOrGreaterThan": 2, 14 | "NotEqual": 3, 15 | 16 | // Value-to-name mapping for convenience 17 | "-2": "EqualToOrLessThan", 18 | "-1": "LessThan", 19 | "0": "Equal", 20 | "1": "GreaterThan", 21 | "2": "EqualToOrGreaterThan", 22 | "3": "NotEqual", 23 | }; 24 | 25 | module.exports = ELobbyComparison; 26 | -------------------------------------------------------------------------------- /enums/ESteamDeckCompatibilityResultDisplayType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamDeckCompatibilityResultDisplayType = { 9 | "Invisible": 0, 10 | "Informational": 1, 11 | "Unsupported": 2, 12 | "Playable": 3, 13 | "Verified": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "Invisible", 17 | "1": "Informational", 18 | "2": "Unsupported", 19 | "3": "Playable", 20 | "4": "Verified", 21 | }; 22 | 23 | module.exports = ESteamDeckCompatibilityResultDisplayType; 24 | -------------------------------------------------------------------------------- /enums/EStreamTransport.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamTransport = { 9 | "None": 0, 10 | "UDP": 1, 11 | "UDPRelay": 2, 12 | "WebRTC": 3, 13 | "SDR": 4, 14 | "UDP_SNS": 5, 15 | "SNS": 6, // obsolete 16 | "UDPRelay_SNS": 6, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "None", 20 | "1": "UDP", 21 | "2": "UDPRelay", 22 | "3": "WebRTC", 23 | "4": "SDR", 24 | "5": "UDP_SNS", 25 | "6": "UDPRelay_SNS", 26 | }; 27 | 28 | module.exports = EStreamTransport; 29 | -------------------------------------------------------------------------------- /enums/EInternalAccountType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EInternalAccountType = { 9 | "k_EInternalSteamAccountType": 1, 10 | "k_EInternalClanType": 2, 11 | "k_EInternalAppType": 3, 12 | "k_EInternalBroadcastChannelType": 4, 13 | 14 | // Value-to-name mapping for convenience 15 | "1": "k_EInternalSteamAccountType", 16 | "2": "k_EInternalClanType", 17 | "3": "k_EInternalAppType", 18 | "4": "k_EInternalBroadcastChannelType", 19 | }; 20 | 21 | module.exports = EInternalAccountType; 22 | -------------------------------------------------------------------------------- /enums/ERemoteClientService.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERemoteClientService = { 9 | "None": 0, 10 | "RemoteControl": 1, 11 | "GameStreaming": 2, 12 | "SiteLicense": 4, 13 | "ContentCache": 8, 14 | "ContentServer": 16, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "None", 18 | "1": "RemoteControl", 19 | "2": "GameStreaming", 20 | "4": "SiteLicense", 21 | "8": "ContentCache", 22 | "16": "ContentServer", 23 | }; 24 | 25 | module.exports = ERemoteClientService; 26 | -------------------------------------------------------------------------------- /enums/EPlatformType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPlatformType = { 9 | "Unknown": 0, 10 | "Win32": 1, 11 | "Win64": 2, 12 | "Linux": 3, // removed "split to Linux64 and Linux32" 13 | "Linux64": 3, 14 | "OSX": 4, 15 | "PS3": 5, 16 | "Linux32": 6, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Unknown", 20 | "1": "Win32", 21 | "2": "Win64", 22 | "3": "Linux64", 23 | "4": "OSX", 24 | "5": "PS3", 25 | "6": "Linux32", 26 | }; 27 | 28 | module.exports = EPlatformType; 29 | -------------------------------------------------------------------------------- /enums/EStreamStatsMessage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamStatsMessage = { 9 | "FrameEvents": 1, 10 | "DebugDump": 2, 11 | "LogMessage": 3, 12 | "LogUploadBegin": 4, 13 | "LogUploadData": 5, 14 | "LogUploadComplete": 6, 15 | 16 | // Value-to-name mapping for convenience 17 | "1": "FrameEvents", 18 | "2": "DebugDump", 19 | "3": "LogMessage", 20 | "4": "LogUploadBegin", 21 | "5": "LogUploadData", 22 | "6": "LogUploadComplete", 23 | }; 24 | 25 | module.exports = EStreamStatsMessage; 26 | -------------------------------------------------------------------------------- /enums/EAuthTokenState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAuthTokenState = { 9 | "Invalid": 0, 10 | "New": 1, 11 | "Confirmed": 2, 12 | "Issued": 3, 13 | "Denied": 4, 14 | "LoggedOut": 5, 15 | "Consumed": 6, 16 | "Revoked": 99, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Invalid", 20 | "1": "New", 21 | "2": "Confirmed", 22 | "3": "Issued", 23 | "4": "Denied", 24 | "5": "LoggedOut", 25 | "6": "Consumed", 26 | "99": "Revoked", 27 | }; 28 | 29 | module.exports = EAuthTokenState; 30 | -------------------------------------------------------------------------------- /enums/EPublishedFileInappropriateResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPublishedFileInappropriateResult = { 9 | "NotScanned": 0, 10 | "VeryUnlikely": 1, 11 | "Unlikely": 30, 12 | "Possible": 50, 13 | "Likely": 75, 14 | "VeryLikely": 100, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "NotScanned", 18 | "1": "VeryUnlikely", 19 | "30": "Unlikely", 20 | "50": "Possible", 21 | "75": "Likely", 22 | "100": "VeryLikely", 23 | }; 24 | 25 | module.exports = EPublishedFileInappropriateResult; 26 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /enums/EContentDescriptorID.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EContentDescriptorID = { 9 | "FrequentNudityOrSexualContent": 1, 10 | "FrequentViolenceOrGore": 2, 11 | "StrongSexualContent": 3, 12 | "UNUSED_4": 4, 13 | "AnyMatureContent": 5, 14 | 15 | // Value-to-name mapping for convenience 16 | "1": "FrequentNudityOrSexualContent", 17 | "2": "FrequentViolenceOrGore", 18 | "3": "StrongSexualContent", 19 | "4": "UNUSED_4", 20 | "5": "AnyMatureContent", 21 | }; 22 | 23 | module.exports = EContentDescriptorID; 24 | -------------------------------------------------------------------------------- /enums/EPersonaState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPersonaState = { 9 | "Offline": 0, 10 | "Online": 1, 11 | "Busy": 2, 12 | "Away": 3, 13 | "Snooze": 4, 14 | "LookingToTrade": 5, 15 | "LookingToPlay": 6, 16 | "Invisible": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Offline", 20 | "1": "Online", 21 | "2": "Busy", 22 | "3": "Away", 23 | "4": "Snooze", 24 | "5": "LookingToTrade", 25 | "6": "LookingToPlay", 26 | "7": "Invisible", 27 | }; 28 | 29 | module.exports = EPersonaState; 30 | -------------------------------------------------------------------------------- /protobufs/common_base.proto: -------------------------------------------------------------------------------- 1 | import "google/protobuf/descriptor.proto"; 2 | 3 | extend .google.protobuf.FieldOptions { 4 | optional string description = 50000; 5 | } 6 | 7 | extend .google.protobuf.ServiceOptions { 8 | optional string service_description = 50000; 9 | } 10 | 11 | extend .google.protobuf.MethodOptions { 12 | optional string method_description = 50000; 13 | } 14 | 15 | extend .google.protobuf.EnumOptions { 16 | optional string enum_description = 50000; 17 | } 18 | 19 | extend .google.protobuf.EnumValueOptions { 20 | optional string enum_value_description = 50000; 21 | } 22 | 23 | message NoResponse { 24 | } 25 | 26 | message NotImplemented { 27 | } 28 | -------------------------------------------------------------------------------- /enums/EUpdaterState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUpdaterState = { 9 | "Invalid": 0, 10 | "UpToDate": 2, 11 | "Checking": 3, 12 | "Available": 4, 13 | "Applying": 5, 14 | "ClientRestartPending": 6, 15 | "SystemRestartPending": 7, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "Invalid", 19 | "2": "UpToDate", 20 | "3": "Checking", 21 | "4": "Available", 22 | "5": "Applying", 23 | "6": "ClientRestartPending", 24 | "7": "SystemRestartPending", 25 | }; 26 | 27 | module.exports = EUpdaterState; 28 | -------------------------------------------------------------------------------- /enums/EChatRoomGroupRank.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomGroupRank = { 9 | "Default": 0, 10 | "Viewer": 10, 11 | "Guest": 15, 12 | "Member": 20, 13 | "Moderator": 30, 14 | "Officer": 40, 15 | "Owner": 50, 16 | "TestInvalid": 99, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Default", 20 | "10": "Viewer", 21 | "15": "Guest", 22 | "20": "Member", 23 | "30": "Moderator", 24 | "40": "Officer", 25 | "50": "Owner", 26 | "99": "TestInvalid", 27 | }; 28 | 29 | module.exports = EChatRoomGroupRank; 30 | -------------------------------------------------------------------------------- /enums/EClientSettingStore.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClientSettingStore = { 9 | "Invalid": 0, 10 | "ConfigStore_Install": 1, 11 | "ConfigStore_UserRoaming": 2, 12 | "ConfigStore_UserLocal": 3, 13 | "Registry": 4, 14 | "CustomFunc": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Invalid", 18 | "1": "ConfigStore_Install", 19 | "2": "ConfigStore_UserRoaming", 20 | "3": "ConfigStore_UserLocal", 21 | "4": "Registry", 22 | "5": "CustomFunc", 23 | }; 24 | 25 | module.exports = EClientSettingStore; 26 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /enums/EChatMemberStateChange.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatMemberStateChange = { 9 | "Entered": 1, 10 | "Left": 2, 11 | "Disconnected": 4, 12 | "Kicked": 8, 13 | "Banned": 16, 14 | "VoiceSpeaking": 4096, 15 | "VoiceDoneSpeaking": 8192, 16 | 17 | // Value-to-name mapping for convenience 18 | "1": "Entered", 19 | "2": "Left", 20 | "4": "Disconnected", 21 | "8": "Kicked", 22 | "16": "Banned", 23 | "4096": "VoiceSpeaking", 24 | "8192": "VoiceDoneSpeaking", 25 | }; 26 | 27 | module.exports = EChatMemberStateChange; 28 | -------------------------------------------------------------------------------- /enums/EStreamControllerConfigMsg.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamControllerConfigMsg = { 9 | "RequestConfigsForApp": 0, 10 | "ConfigResponse": 1, 11 | "PersonalizationResponse": 2, 12 | "ActiveConfigChange": 3, 13 | "RequestActiveConfig": 4, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "RequestConfigsForApp", 17 | "1": "ConfigResponse", 18 | "2": "PersonalizationResponse", 19 | "3": "ActiveConfigChange", 20 | "4": "RequestActiveConfig", 21 | }; 22 | 23 | module.exports = EStreamControllerConfigMsg; 24 | -------------------------------------------------------------------------------- /enums/EPublishedFileRevision.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPublishedFileRevision = { 9 | "Default": 0, 10 | "Latest": 1, 11 | "ApprovedSnapshot": 2, 12 | "ApprovedSnapshot_China": 3, 13 | "RejectedSnapshot": 4, 14 | "RejectedSnapshot_China": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "Default", 18 | "1": "Latest", 19 | "2": "ApprovedSnapshot", 20 | "3": "ApprovedSnapshot_China", 21 | "4": "RejectedSnapshot", 22 | "5": "RejectedSnapshot_China", 23 | }; 24 | 25 | module.exports = EPublishedFileRevision; 26 | -------------------------------------------------------------------------------- /enums/ESteamNetworkingUDPMsgID.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamNetworkingUDPMsgID = { 9 | "ChallengeRequest": 32, 10 | "ChallengeReply": 33, 11 | "ConnectRequest": 34, 12 | "ConnectOK": 35, 13 | "ConnectionClosed": 36, 14 | "NoConnection": 37, 15 | 16 | // Value-to-name mapping for convenience 17 | "32": "ChallengeRequest", 18 | "33": "ChallengeReply", 19 | "34": "ConnectRequest", 20 | "35": "ConnectOK", 21 | "36": "ConnectionClosed", 22 | "37": "NoConnection", 23 | }; 24 | 25 | module.exports = ESteamNetworkingUDPMsgID; 26 | -------------------------------------------------------------------------------- /enums/EStreamFramerateLimiter.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamFramerateLimiter = { 9 | "SlowCapture": 1, 10 | "SlowConvert": 2, 11 | "SlowEncode": 4, 12 | "SlowNetwork": 8, 13 | "SlowDecode": 16, 14 | "SlowGame": 32, 15 | "SlowDisplay": 64, 16 | 17 | // Value-to-name mapping for convenience 18 | "1": "SlowCapture", 19 | "2": "SlowConvert", 20 | "4": "SlowEncode", 21 | "8": "SlowNetwork", 22 | "16": "SlowDecode", 23 | "32": "SlowGame", 24 | "64": "SlowDisplay", 25 | }; 26 | 27 | module.exports = EStreamFramerateLimiter; 28 | -------------------------------------------------------------------------------- /enums/ERegionCode.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERegionCode = { 9 | "USEast": 0, 10 | "USWest": 1, 11 | "SouthAmerica": 2, 12 | "Europe": 3, 13 | "Asia": 4, 14 | "Australia": 5, 15 | "MiddleEast": 6, 16 | "Africa": 7, 17 | "World": 255, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "USEast", 21 | "1": "USWest", 22 | "2": "SouthAmerica", 23 | "3": "Europe", 24 | "4": "Asia", 25 | "5": "Australia", 26 | "6": "MiddleEast", 27 | "7": "Africa", 28 | "255": "World", 29 | }; 30 | 31 | module.exports = ERegionCode; 32 | -------------------------------------------------------------------------------- /enums/ERemoteStoragePlatform.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERemoteStoragePlatform = { 9 | "None": 0, 10 | "Windows": 1, 11 | "OSX": 2, 12 | "PS3": 4, 13 | "Linux": 8, 14 | "Switch": 16, 15 | "Android": 32, 16 | "IPhoneOS": 64, 17 | "All": -1, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "None", 21 | "1": "Windows", 22 | "2": "OSX", 23 | "4": "PS3", 24 | "8": "Linux", 25 | "16": "Switch", 26 | "32": "Android", 27 | "64": "IPhoneOS", 28 | "-1": "All", 29 | }; 30 | 31 | module.exports = ERemoteStoragePlatform; 32 | -------------------------------------------------------------------------------- /enums/EUCMFilePrivacyState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Mon Sep 02 2024 23:48:07 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUCMFilePrivacyState = { 9 | "Invalid": -1, 10 | "Private": 2, 11 | "FriendsOnly": 4, 12 | "Public": 8, 13 | "Unlisted": 16, 14 | 15 | // Value-to-name mapping for convenience 16 | "-1": "Invalid", 17 | "2": "Private", 18 | "4": "FriendsOnly", 19 | "8": "Public", 20 | "16": "Unlisted", 21 | }; 22 | 23 | module.exports = EUCMFilePrivacyState; 24 | 25 | module.exports.All = module.exports.Public | module.exports.FriendsOnly | module.exports.Private | module.exports.Unlisted; 26 | -------------------------------------------------------------------------------- /enums/EClanRelationship.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClanRelationship = { 9 | "None": 0, 10 | "Blocked": 1, 11 | "Invited": 2, 12 | "Member": 3, 13 | "Kicked": 4, 14 | "KickAcknowledged": 5, 15 | "PendingApproval": 6, 16 | "RequestDenied": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "None", 20 | "1": "Blocked", 21 | "2": "Invited", 22 | "3": "Member", 23 | "4": "Kicked", 24 | "5": "KickAcknowledged", 25 | "6": "PendingApproval", 26 | "7": "RequestDenied", 27 | }; 28 | 29 | module.exports = EClanRelationship; 30 | -------------------------------------------------------------------------------- /enums/EPublishedFileForSaleStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPublishedFileForSaleStatus = { 9 | "NotForSale": 0, 10 | "PendingApproval": 1, 11 | "ApprovedForSale": 2, 12 | "RejectedForSale": 3, 13 | "NoLongerForSale": 4, 14 | "TentativeApproval": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "NotForSale", 18 | "1": "PendingApproval", 19 | "2": "ApprovedForSale", 20 | "3": "RejectedForSale", 21 | "4": "NoLongerForSale", 22 | "5": "TentativeApproval", 23 | }; 24 | 25 | module.exports = EPublishedFileForSaleStatus; 26 | -------------------------------------------------------------------------------- /enums/EUdpPacketType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUdpPacketType = { 9 | "Invalid": 0, 10 | "ChallengeReq": 1, 11 | "Challenge": 2, 12 | "Connect": 3, 13 | "Accept": 4, 14 | "Disconnect": 5, 15 | "Data": 6, 16 | "Datagram": 7, 17 | "Max": 8, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "Invalid", 21 | "1": "ChallengeReq", 22 | "2": "Challenge", 23 | "3": "Connect", 24 | "4": "Accept", 25 | "5": "Disconnect", 26 | "6": "Data", 27 | "7": "Datagram", 28 | "8": "Max", 29 | }; 30 | 31 | module.exports = EUdpPacketType; 32 | -------------------------------------------------------------------------------- /protobufs/generated/offline_ticket.json: -------------------------------------------------------------------------------- 1 | { 2 | "nested": { 3 | "Offline_Ticket": { 4 | "fields": { 5 | "encrypted_ticket": { 6 | "type": "bytes", 7 | "id": 1 8 | }, 9 | "signature": { 10 | "type": "bytes", 11 | "id": 2 12 | }, 13 | "kdf1": { 14 | "type": "int32", 15 | "id": 3 16 | }, 17 | "salt1": { 18 | "type": "bytes", 19 | "id": 4 20 | }, 21 | "kdf2": { 22 | "type": "int32", 23 | "id": 5 24 | }, 25 | "salt2": { 26 | "type": "bytes", 27 | "id": 6 28 | } 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Is your feature request related to a problem? Please describe. 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | ## Describe the solution you'd like 14 | A clear and concise description of what you want to happen. 15 | 16 | ## Describe alternatives you've considered 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | ## Additional context 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /enums/EActivationCodeClass.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EActivationCodeClass = { 9 | "WonCDKey": 0, 10 | "ValveCDKey": 1, 11 | "Doom3CDKey": 2, 12 | "DBLookup": 3, 13 | "Steam2010Key": 4, 14 | "Max": 5, 15 | "Test": 2147483647, 16 | "Invalid": 4294967295, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "WonCDKey", 20 | "1": "ValveCDKey", 21 | "2": "Doom3CDKey", 22 | "3": "DBLookup", 23 | "4": "Steam2010Key", 24 | "5": "Max", 25 | "2147483647": "Test", 26 | "4294967295": "Invalid", 27 | }; 28 | 29 | module.exports = EActivationCodeClass; 30 | -------------------------------------------------------------------------------- /enums/EDRMBlobDownloadType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EDRMBlobDownloadType = { 9 | "Error": 0, 10 | "File": 1, 11 | "Parts": 2, 12 | "Compressed": 4, 13 | "AllMask": 7, 14 | "IsJob": 8, 15 | "HighPriority": 16, 16 | "AddTimestamp": 32, 17 | "LowPriority": 64, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "Error", 21 | "1": "File", 22 | "2": "Parts", 23 | "4": "Compressed", 24 | "7": "AllMask", 25 | "8": "IsJob", 26 | "16": "HighPriority", 27 | "32": "AddTimestamp", 28 | "64": "LowPriority", 29 | }; 30 | 31 | module.exports = EDRMBlobDownloadType; 32 | -------------------------------------------------------------------------------- /enums/EMarketingMessageFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMarketingMessageFlags = { 9 | "None": 0, 10 | "HighPriority": 1, 11 | "PlatformWindows": 2, 12 | "PlatformMac": 4, 13 | "PlatformLinux": 8, 14 | 15 | // Value-to-name mapping for convenience 16 | "0": "None", 17 | "1": "HighPriority", 18 | "2": "PlatformWindows", 19 | "4": "PlatformMac", 20 | "8": "PlatformLinux", 21 | }; 22 | 23 | module.exports = EMarketingMessageFlags; 24 | 25 | module.exports.PlatformRestrictions = module.exports.PlatformWindows | module.exports.PlatformMac | module.exports.PlatformLinux; 26 | -------------------------------------------------------------------------------- /enums/EWorkshopEnumerationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EWorkshopEnumerationType = { 9 | "RankedByVote": 0, 10 | "Recent": 1, 11 | "Trending": 2, 12 | "FavoriteOfFriends": 3, 13 | "VotedByFriends": 4, 14 | "ContentByFriends": 5, 15 | "RecentFromFollowedUsers": 6, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "RankedByVote", 19 | "1": "Recent", 20 | "2": "Trending", 21 | "3": "FavoriteOfFriends", 22 | "4": "VotedByFriends", 23 | "5": "ContentByFriends", 24 | "6": "RecentFromFollowedUsers", 25 | }; 26 | 27 | module.exports = EWorkshopEnumerationType; 28 | -------------------------------------------------------------------------------- /enums/EAuthTokenRevokeAction.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAuthTokenRevokeAction = { 9 | "Logout": 0, 10 | "Permanent": 1, 11 | "Replaced": 2, 12 | "Support": 3, 13 | "Consume": 4, 14 | "NonRememberedLogout": 5, 15 | "NonRememberedPermanent": 6, 16 | "Automatic": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Logout", 20 | "1": "Permanent", 21 | "2": "Replaced", 22 | "3": "Support", 23 | "4": "Consume", 24 | "5": "NonRememberedLogout", 25 | "6": "NonRememberedPermanent", 26 | "7": "Automatic", 27 | }; 28 | 29 | module.exports = EAuthTokenRevokeAction; 30 | -------------------------------------------------------------------------------- /enums/EMarketingMessageAssociationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:13:56 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMarketingMessageAssociationType = { 9 | "NoAssociation": 0, 10 | "AppAssociation": 1, 11 | "SubscriptionAssociation": 2, 12 | "PublisherAssociation": 3, 13 | "GenreAssociation": 4, 14 | "BundleAssociation": 5, 15 | 16 | // Value-to-name mapping for convenience 17 | "0": "NoAssociation", 18 | "1": "AppAssociation", 19 | "2": "SubscriptionAssociation", 20 | "3": "PublisherAssociation", 21 | "4": "GenreAssociation", 22 | "5": "BundleAssociation", 23 | }; 24 | 25 | module.exports = EMarketingMessageAssociationType; 26 | -------------------------------------------------------------------------------- /enums/EMsgClanAccountFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMsgClanAccountFlags = { 9 | "k_EMsgClanAccountFlagPublic": 1, 10 | "k_EMsgClanAccountFlagLarge": 2, 11 | "k_EMsgClanAccountFlagLocked": 4, 12 | "k_EMsgClanAccountFlagDisabled": 8, 13 | "k_EMsgClanAccountFlagOGG": 16, 14 | 15 | // Value-to-name mapping for convenience 16 | "1": "k_EMsgClanAccountFlagPublic", 17 | "2": "k_EMsgClanAccountFlagLarge", 18 | "4": "k_EMsgClanAccountFlagLocked", 19 | "8": "k_EMsgClanAccountFlagDisabled", 20 | "16": "k_EMsgClanAccountFlagOGG", 21 | }; 22 | 23 | module.exports = EMsgClanAccountFlags; 24 | -------------------------------------------------------------------------------- /enums/EAuthSessionGuardType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAuthSessionGuardType = { 9 | "Unknown": 0, 10 | "None": 1, 11 | "EmailCode": 2, 12 | "DeviceCode": 3, 13 | "DeviceConfirmation": 4, 14 | "EmailConfirmation": 5, 15 | "MachineToken": 6, 16 | "LegacyMachineAuth": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Unknown", 20 | "1": "None", 21 | "2": "EmailCode", 22 | "3": "DeviceCode", 23 | "4": "DeviceConfirmation", 24 | "5": "EmailConfirmation", 25 | "6": "MachineToken", 26 | "7": "LegacyMachineAuth", 27 | }; 28 | 29 | module.exports = EAuthSessionGuardType; 30 | -------------------------------------------------------------------------------- /enums/EGameSearchResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EGameSearchResult = { 9 | "Invalid": 0, 10 | "SearchInProgress": 1, 11 | "SearchFailedNoHosts": 2, 12 | "SearchGameFound": 3, 13 | "SearchCompleteAccepted": 4, 14 | "SearchCompleteDeclined": 5, 15 | "SearchCanceled": 6, 16 | 17 | // Value-to-name mapping for convenience 18 | "0": "Invalid", 19 | "1": "SearchInProgress", 20 | "2": "SearchFailedNoHosts", 21 | "3": "SearchGameFound", 22 | "4": "SearchCompleteAccepted", 23 | "5": "SearchCompleteDeclined", 24 | "6": "SearchCanceled", 25 | }; 26 | 27 | module.exports = EGameSearchResult; 28 | -------------------------------------------------------------------------------- /enums/ELauncherType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Mon Sep 02 2024 23:48:07 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELauncherType = { 9 | "Default": 0, 10 | "PerfectWorld": 1, 11 | "Nexon": 2, 12 | "CmdLine": 3, 13 | "CSGO": 4, 14 | "ClientUI": 5, 15 | "Headless": 6, 16 | "SteamChina": 7, 17 | "SingleApp": 8, 18 | "GameServer": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Default", 22 | "1": "PerfectWorld", 23 | "2": "Nexon", 24 | "3": "CmdLine", 25 | "4": "CSGO", 26 | "5": "ClientUI", 27 | "6": "Headless", 28 | "7": "SteamChina", 29 | "8": "SingleApp", 30 | "9": "GameServer", 31 | }; 32 | 33 | module.exports = ELauncherType; 34 | -------------------------------------------------------------------------------- /enums/EContentDownloadSourceType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EContentDownloadSourceType = { 9 | "Invalid": 0, 10 | "CS": 1, 11 | "CDN": 2, 12 | "LCS": 3, 13 | "ProxyCache": 4, 14 | "LANPeer": 5, 15 | "SLS": 6, 16 | "SteamCache": 7, 17 | "OpenCache": 8, 18 | "LANCache": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "CS", 23 | "2": "CDN", 24 | "3": "LCS", 25 | "4": "ProxyCache", 26 | "5": "LANPeer", 27 | "6": "SLS", 28 | "7": "SteamCache", 29 | "8": "OpenCache", 30 | "9": "LANCache", 31 | }; 32 | 33 | module.exports = EContentDownloadSourceType; 34 | -------------------------------------------------------------------------------- /enums/ERemoteDeviceAuthorizationResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERemoteDeviceAuthorizationResult = { 9 | "Success": 0, 10 | "Denied": 1, 11 | "NotLoggedIn": 2, 12 | "Offline": 3, 13 | "Busy": 4, 14 | "InProgress": 5, 15 | "TimedOut": 6, 16 | "Failed": 7, 17 | "Canceled": 8, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "Success", 21 | "1": "Denied", 22 | "2": "NotLoggedIn", 23 | "3": "Offline", 24 | "4": "Busy", 25 | "5": "InProgress", 26 | "6": "TimedOut", 27 | "7": "Failed", 28 | "8": "Canceled", 29 | }; 30 | 31 | module.exports = ERemoteDeviceAuthorizationResult; 32 | -------------------------------------------------------------------------------- /enums/ESteamTVContentTemplate.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamTVContentTemplate = { 9 | "Invalid": 0, 10 | "Takeover": 1, 11 | "SingleGame": 2, 12 | "GameList": 3, 13 | "QuickExplore": 4, 14 | "ConveyorBelt": 5, 15 | "WatchParty": 6, 16 | "Developer": 7, 17 | "Event": 8, 18 | 19 | // Value-to-name mapping for convenience 20 | "0": "Invalid", 21 | "1": "Takeover", 22 | "2": "SingleGame", 23 | "3": "GameList", 24 | "4": "QuickExplore", 25 | "5": "ConveyorBelt", 26 | "6": "WatchParty", 27 | "7": "Developer", 28 | "8": "Event", 29 | }; 30 | 31 | module.exports = ESteamTVContentTemplate; 32 | -------------------------------------------------------------------------------- /enums/EAppUsageEvent.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppUsageEvent = { 9 | "GameLaunch": 1, 10 | "GameLaunchTrial": 2, 11 | "Media": 3, 12 | "PreloadStart": 4, 13 | "PreloadFinish": 5, 14 | "MarketingMessageView": 6, 15 | "InGameAdViewed": 7, 16 | "GameLaunchFreeWeekend": 8, 17 | 18 | // Value-to-name mapping for convenience 19 | "1": "GameLaunch", 20 | "2": "GameLaunchTrial", 21 | "3": "Media", 22 | "4": "PreloadStart", 23 | "5": "PreloadFinish", 24 | "6": "MarketingMessageView", 25 | "7": "InGameAdViewed", 26 | "8": "GameLaunchFreeWeekend", 27 | }; 28 | 29 | module.exports = EAppUsageEvent; 30 | -------------------------------------------------------------------------------- /enums/ESystemAudioChannel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemAudioChannel = { 9 | "Invalid": 0, 10 | "Aggregated": 1, 11 | "FrontLeft": 2, 12 | "FrontRight": 3, 13 | "LFE": 4, 14 | "BackLeft": 5, 15 | "BackRight": 6, 16 | "FrontCenter": 7, 17 | "Unknown": 8, 18 | "Mono": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "Aggregated", 23 | "2": "FrontLeft", 24 | "3": "FrontRight", 25 | "4": "LFE", 26 | "5": "BackLeft", 27 | "6": "BackRight", 28 | "7": "FrontCenter", 29 | "8": "Unknown", 30 | "9": "Mono", 31 | }; 32 | 33 | module.exports = ESystemAudioChannel; 34 | -------------------------------------------------------------------------------- /enums/EStreamFrameResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamFrameResult = { 9 | "Pending": 0, 10 | "Displayed": 1, 11 | "DroppedNetworkSlow": 2, 12 | "DroppedNetworkLost": 3, 13 | "DroppedDecodeSlow": 4, 14 | "DroppedDecodeCorrupt": 5, 15 | "DroppedLate": 6, 16 | "DroppedReset": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Pending", 20 | "1": "Displayed", 21 | "2": "DroppedNetworkSlow", 22 | "3": "DroppedNetworkLost", 23 | "4": "DroppedDecodeSlow", 24 | "5": "DroppedDecodeCorrupt", 25 | "6": "DroppedLate", 26 | "7": "DroppedReset", 27 | }; 28 | 29 | module.exports = EStreamFrameResult; 30 | -------------------------------------------------------------------------------- /protobufs/generated/encrypted_app_ticket.json: -------------------------------------------------------------------------------- 1 | { 2 | "options": { 3 | "optimize_for": "SPEED", 4 | "cc_generic_services": false 5 | }, 6 | "nested": { 7 | "EncryptedAppTicket": { 8 | "fields": { 9 | "ticket_version_no": { 10 | "type": "uint32", 11 | "id": 1 12 | }, 13 | "crc_encryptedticket": { 14 | "type": "uint32", 15 | "id": 2 16 | }, 17 | "cb_encrypteduserdata": { 18 | "type": "uint32", 19 | "id": 3 20 | }, 21 | "cb_encrypted_appownershipticket": { 22 | "type": "uint32", 23 | "id": 4 24 | }, 25 | "encrypted_ticket": { 26 | "type": "bytes", 27 | "id": 5 28 | } 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /enums/EChatRoomMemberStateChange.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomMemberStateChange = { 9 | "Invalid": 0, 10 | "Joined": 1, 11 | "Parted": 2, 12 | "Kicked": 3, 13 | "Invited": 4, 14 | "RankChanged": 7, 15 | "InviteDismissed": 8, 16 | "Muted": 9, 17 | "Banned": 10, 18 | "RolesChanged": 12, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "Joined", 23 | "2": "Parted", 24 | "3": "Kicked", 25 | "4": "Invited", 26 | "7": "RankChanged", 27 | "8": "InviteDismissed", 28 | "9": "Muted", 29 | "10": "Banned", 30 | "12": "RolesChanged", 31 | }; 32 | 33 | module.exports = EChatRoomMemberStateChange; 34 | -------------------------------------------------------------------------------- /enums/EMarketingMessageType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:13:56 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EMarketingMessageType = { 9 | "Invalid": 0, 10 | "NowAvailable": 1, 11 | "WeekendDeal": 2, 12 | "PrePurchase": 3, 13 | "PlayNow": 4, 14 | "PreloadNow": 5, 15 | "General": 6, 16 | "DemoQuit": 7, 17 | "Gifting": 8, 18 | "EJsKorner": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "NowAvailable", 23 | "2": "WeekendDeal", 24 | "3": "PrePurchase", 25 | "4": "PlayNow", 26 | "5": "PreloadNow", 27 | "6": "General", 28 | "7": "DemoQuit", 29 | "8": "Gifting", 30 | "9": "EJsKorner", 31 | }; 32 | 33 | module.exports = EMarketingMessageType; 34 | -------------------------------------------------------------------------------- /protobufs/steammessages_workshop.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | message CWorkshop_GetEULAStatus_Request { 7 | optional uint32 appid = 1; 8 | } 9 | 10 | message CWorkshop_GetEULAStatus_Response { 11 | optional uint32 version = 1; 12 | optional uint32 timestamp_action = 2; 13 | optional bool accepted = 3; 14 | optional bool needs_action = 4; 15 | } 16 | 17 | service Workshop { 18 | option (service_description) = "A service to access published file data"; 19 | 20 | rpc GetEULAStatus (.CWorkshop_GetEULAStatus_Request) returns (.CWorkshop_GetEULAStatus_Response) { 21 | option (method_description) = "Retrieve the status of the user's EULA acceptance."; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /enums/EAccountType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAccountType = { 9 | "Invalid": 0, 10 | "Individual": 1, 11 | "Multiseat": 2, 12 | "GameServer": 3, 13 | "AnonGameServer": 4, 14 | "Pending": 5, 15 | "ContentServer": 6, 16 | "Clan": 7, 17 | "Chat": 8, 18 | "ConsoleUser": 9, 19 | "AnonUser": 10, 20 | 21 | // Value-to-name mapping for convenience 22 | "0": "Invalid", 23 | "1": "Individual", 24 | "2": "Multiseat", 25 | "3": "GameServer", 26 | "4": "AnonGameServer", 27 | "5": "Pending", 28 | "6": "ContentServer", 29 | "7": "Clan", 30 | "8": "Chat", 31 | "9": "ConsoleUser", 32 | "10": "AnonUser", 33 | }; 34 | 35 | module.exports = EAccountType; 36 | -------------------------------------------------------------------------------- /enums/EDepotFileFlag.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EDepotFileFlag = { 9 | "UserConfig": 1, 10 | "VersionedUserConfig": 2, 11 | "Encrypted": 4, 12 | "ReadOnly": 8, 13 | "Hidden": 16, 14 | "Executable": 32, 15 | "Directory": 64, 16 | "CustomExecutable": 128, 17 | "InstallScript": 256, 18 | "Symlink": 512, 19 | 20 | // Value-to-name mapping for convenience 21 | "1": "UserConfig", 22 | "2": "VersionedUserConfig", 23 | "4": "Encrypted", 24 | "8": "ReadOnly", 25 | "16": "Hidden", 26 | "32": "Executable", 27 | "64": "Directory", 28 | "128": "CustomExecutable", 29 | "256": "InstallScript", 30 | "512": "Symlink", 31 | }; 32 | 33 | module.exports = EDepotFileFlag; 34 | -------------------------------------------------------------------------------- /enums/EFriendRelationship.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EFriendRelationship = { 9 | "None": 0, 10 | "Blocked": 1, 11 | "RequestRecipient": 2, 12 | "Friend": 3, 13 | "RequestInitiator": 4, 14 | "Ignored": 5, 15 | "IgnoredFriend": 6, 16 | "SuggestedFriend": 7, // removed "was used by the original implementation of the facebook linking feature; but now unused." 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "None", 20 | "1": "Blocked", 21 | "2": "RequestRecipient", 22 | "3": "Friend", 23 | "4": "RequestInitiator", 24 | "5": "Ignored", 25 | "6": "IgnoredFriend", 26 | "7": "SuggestedFriend", 27 | }; 28 | 29 | module.exports = EFriendRelationship; 30 | -------------------------------------------------------------------------------- /enums/EAppCloudStatus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppCloudStatus = { 9 | "Invalid": 0, 10 | "Disabled": 1, 11 | "Unknown": 2, 12 | "Synchronized": 3, 13 | "Checking": 4, 14 | "OutOfSync": 5, 15 | "Uploading": 6, 16 | "Downloading": 7, 17 | "SyncFailed": 8, 18 | "Conflict": 9, 19 | "PendingElsewhere": 10, 20 | 21 | // Value-to-name mapping for convenience 22 | "0": "Invalid", 23 | "1": "Disabled", 24 | "2": "Unknown", 25 | "3": "Synchronized", 26 | "4": "Checking", 27 | "5": "OutOfSync", 28 | "6": "Uploading", 29 | "7": "Downloading", 30 | "8": "SyncFailed", 31 | "9": "Conflict", 32 | "10": "PendingElsewhere", 33 | }; 34 | 35 | module.exports = EAppCloudStatus; 36 | -------------------------------------------------------------------------------- /enums/EChatRoomServerMsg.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomServerMsg = { 9 | "Invalid": 0, 10 | "RenameChatRoom": 1, 11 | "Joined": 2, 12 | "Parted": 3, 13 | "Kicked": 4, 14 | "Invited": 5, 15 | "InviteDismissed": 8, 16 | "ChatRoomTaglineChanged": 9, 17 | "ChatRoomAvatarChanged": 10, 18 | "AppCustom": 11, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "RenameChatRoom", 23 | "2": "Joined", 24 | "3": "Parted", 25 | "4": "Kicked", 26 | "5": "Invited", 27 | "8": "InviteDismissed", 28 | "9": "ChatRoomTaglineChanged", 29 | "10": "ChatRoomAvatarChanged", 30 | "11": "AppCustom", 31 | }; 32 | 33 | module.exports = EChatRoomServerMsg; 34 | -------------------------------------------------------------------------------- /enums/EUserReviewScore.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EUserReviewScore = { 9 | "None": 0, 10 | "OverwhelminglyNegative": 1, 11 | "VeryNegative": 2, 12 | "Negative": 3, 13 | "MostlyNegative": 4, 14 | "Mixed": 5, 15 | "MostlyPositive": 6, 16 | "Positive": 7, 17 | "VeryPositive": 8, 18 | "OverwhelminglyPositive": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "None", 22 | "1": "OverwhelminglyNegative", 23 | "2": "VeryNegative", 24 | "3": "Negative", 25 | "4": "MostlyNegative", 26 | "5": "Mixed", 27 | "6": "MostlyPositive", 28 | "7": "Positive", 29 | "8": "VeryPositive", 30 | "9": "OverwhelminglyPositive", 31 | }; 32 | 33 | module.exports = EUserReviewScore; 34 | -------------------------------------------------------------------------------- /enums/ESteamReviewScore.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamReviewScore = { 9 | "None": 0, 10 | "OverwhelminglyNegative": 1, 11 | "VeryNegative": 2, 12 | "Negative": 3, 13 | "MostlyNegative": 4, 14 | "Mixed": 5, 15 | "MostlyPositive": 6, 16 | "Positive": 7, 17 | "VeryPositive": 8, 18 | "OverwhelminglyPositive": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "None", 22 | "1": "OverwhelminglyNegative", 23 | "2": "VeryNegative", 24 | "3": "Negative", 25 | "4": "MostlyNegative", 26 | "5": "Mixed", 27 | "6": "MostlyPositive", 28 | "7": "Positive", 29 | "8": "VeryPositive", 30 | "9": "OverwhelminglyPositive", 31 | }; 32 | 33 | module.exports = ESteamReviewScore; 34 | -------------------------------------------------------------------------------- /enums/EChatRoomServerMessage.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomServerMessage = { 9 | "Invalid": 0, 10 | "RenameChatRoom": 1, 11 | "Joined": 2, 12 | "Parted": 3, 13 | "Kicked": 4, 14 | "Invited": 5, 15 | "InviteDismissed": 8, 16 | "ChatRoomTaglineChanged": 9, 17 | "ChatRoomAvatarChanged": 10, 18 | "AppCustom": 11, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "Invalid", 22 | "1": "RenameChatRoom", 23 | "2": "Joined", 24 | "3": "Parted", 25 | "4": "Kicked", 26 | "5": "Invited", 27 | "8": "InviteDismissed", 28 | "9": "ChatRoomTaglineChanged", 29 | "10": "ChatRoomAvatarChanged", 30 | "11": "AppCustom", 31 | }; 32 | 33 | module.exports = EChatRoomServerMessage; 34 | -------------------------------------------------------------------------------- /enums/ELicenseType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELicenseType = { 9 | "NoLicense": 0, 10 | "SinglePurchase": 1, 11 | "SinglePurchaseLimitedUse": 2, 12 | "RecurringCharge": 3, 13 | "RecurringChargeLimitedUse": 4, 14 | "RecurringChargeLimitedUseWithOverages": 5, 15 | "RecurringOption": 6, 16 | "LimitedUseDelayedActivation": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "NoLicense", 20 | "1": "SinglePurchase", 21 | "2": "SinglePurchaseLimitedUse", 22 | "3": "RecurringCharge", 23 | "4": "RecurringChargeLimitedUse", 24 | "5": "RecurringChargeLimitedUseWithOverages", 25 | "6": "RecurringOption", 26 | "7": "LimitedUseDelayedActivation", 27 | }; 28 | 29 | module.exports = ELicenseType; 30 | -------------------------------------------------------------------------------- /enums/ETradeOfferState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ETradeOfferState = { 9 | "Invalid": 1, 10 | "Active": 2, 11 | "Accepted": 3, 12 | "Countered": 4, 13 | "Expired": 5, 14 | "Canceled": 6, 15 | "Declined": 7, 16 | "InvalidItems": 8, 17 | "CreatedNeedsConfirmation": 9, 18 | "CanceledBySecondFactor": 10, 19 | "InEscrow": 11, 20 | 21 | // Value-to-name mapping for convenience 22 | "1": "Invalid", 23 | "2": "Active", 24 | "3": "Accepted", 25 | "4": "Countered", 26 | "5": "Expired", 27 | "6": "Canceled", 28 | "7": "Declined", 29 | "8": "InvalidItems", 30 | "9": "CreatedNeedsConfirmation", 31 | "10": "CanceledBySecondFactor", 32 | "11": "InEscrow", 33 | }; 34 | 35 | module.exports = ETradeOfferState; 36 | -------------------------------------------------------------------------------- /enums/EBluetoothDeviceType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:35:51 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum EBluetoothDeviceType 6 | * @readonly 7 | */ 8 | const EBluetoothDeviceType = { 9 | "Invalid": 0, 10 | "Unknown": 1, 11 | "Phone": 2, 12 | "Computer": 3, 13 | "Headset": 4, 14 | "Headphones": 5, 15 | "Speakers": 6, 16 | "OtherAudio": 7, 17 | "Mouse": 8, 18 | "Joystick": 9, 19 | "Gamepad": 10, 20 | "Keyboard": 11, 21 | 22 | // Value-to-name mapping for convenience 23 | "0": "Invalid", 24 | "1": "Unknown", 25 | "2": "Phone", 26 | "3": "Computer", 27 | "4": "Headset", 28 | "5": "Headphones", 29 | "6": "Speakers", 30 | "7": "OtherAudio", 31 | "8": "Mouse", 32 | "9": "Joystick", 33 | "10": "Gamepad", 34 | "11": "Keyboard", 35 | }; 36 | 37 | module.exports = EBluetoothDeviceType; 38 | -------------------------------------------------------------------------------- /enums/EChatActionResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatActionResult = { 9 | "Success": 1, 10 | "Error": 2, 11 | "NotPermitted": 3, 12 | "NotAllowedOnClanMember": 4, 13 | "NotAllowedOnBannedUser": 5, 14 | "NotAllowedOnChatOwner": 6, 15 | "NotAllowedOnSelf": 7, 16 | "ChatDoesntExist": 8, 17 | "ChatFull": 9, 18 | "VoiceSlotsFull": 10, 19 | 20 | // Value-to-name mapping for convenience 21 | "1": "Success", 22 | "2": "Error", 23 | "3": "NotPermitted", 24 | "4": "NotAllowedOnClanMember", 25 | "5": "NotAllowedOnBannedUser", 26 | "6": "NotAllowedOnChatOwner", 27 | "7": "NotAllowedOnSelf", 28 | "8": "ChatDoesntExist", 29 | "9": "ChatFull", 30 | "10": "VoiceSlotsFull", 31 | }; 32 | 33 | module.exports = EChatActionResult; 34 | -------------------------------------------------------------------------------- /enums/EStoreAppType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStoreAppType = { 9 | "Game": 0, 10 | "Demo": 1, 11 | "Mod": 2, 12 | "Movie": 3, 13 | "DLC": 4, 14 | "Guide": 5, 15 | "Software": 6, 16 | "Video": 7, 17 | "Series": 8, 18 | "Episode": 9, 19 | "Hardware": 10, 20 | "Music": 11, 21 | "Beta": 12, 22 | "Tool": 13, 23 | "Advertising": 14, 24 | 25 | // Value-to-name mapping for convenience 26 | "0": "Game", 27 | "1": "Demo", 28 | "2": "Mod", 29 | "3": "Movie", 30 | "4": "DLC", 31 | "5": "Guide", 32 | "6": "Software", 33 | "7": "Video", 34 | "8": "Series", 35 | "9": "Episode", 36 | "10": "Hardware", 37 | "11": "Music", 38 | "12": "Beta", 39 | "13": "Tool", 40 | "14": "Advertising", 41 | }; 42 | 43 | module.exports = EStoreAppType; 44 | -------------------------------------------------------------------------------- /enums/ESystemIMType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESystemIMType = { 9 | "RawText": 0, 10 | "InvalidCard": 1, 11 | "RecurringPurchaseFailed": 2, 12 | "CardWillExpire": 3, 13 | "SubscriptionExpired": 4, 14 | "GuestPassReceived": 5, 15 | "GuestPassGranted": 6, 16 | "GiftRevoked": 7, 17 | "SupportMessage": 8, 18 | "SupportMessageClearAlert": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "RawText", 22 | "1": "InvalidCard", 23 | "2": "RecurringPurchaseFailed", 24 | "3": "CardWillExpire", 25 | "4": "SubscriptionExpired", 26 | "5": "GuestPassReceived", 27 | "6": "GuestPassGranted", 28 | "7": "GiftRevoked", 29 | "8": "SupportMessage", 30 | "9": "SupportMessageClearAlert", 31 | }; 32 | 33 | module.exports = ESystemIMType; 34 | -------------------------------------------------------------------------------- /enums/EClanPermission.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClanPermission = { 9 | "Nobody": 0, 10 | "Owner": 1, 11 | "Officer": 2, 12 | "OwnerAndOfficer": 3, 13 | "Member": 4, 14 | "Moderator": 8, 15 | "OGGGameOwner": 16, 16 | "NonMember": 128, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "Nobody", 20 | "1": "Owner", 21 | "2": "Officer", 22 | "3": "OwnerAndOfficer", 23 | "4": "Member", 24 | "8": "Moderator", 25 | "16": "OGGGameOwner", 26 | "128": "NonMember", 27 | }; 28 | 29 | module.exports = EClanPermission; 30 | 31 | module.exports.OwnerOfficerModerator = module.exports.Owner | module.exports.Officer | module.exports.Moderator; 32 | module.exports.AllMembers = module.exports.Owner | module.exports.Officer | module.exports.Moderator | module.exports.Member; 33 | -------------------------------------------------------------------------------- /enums/EExternalAccountType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EExternalAccountType = { 9 | "k_EExternalNone": 0, 10 | "k_EExternalSteamAccount": 1, 11 | "k_EExternalGoogleAccount": 2, 12 | "k_EExternalFacebookAccount": 3, 13 | "k_EExternalTwitterAccount": 4, 14 | "k_EExternalTwitchAccount": 5, 15 | "k_EExternalYouTubeChannelAccount": 6, 16 | "k_EExternalFacebookPage": 7, 17 | 18 | // Value-to-name mapping for convenience 19 | "0": "k_EExternalNone", 20 | "1": "k_EExternalSteamAccount", 21 | "2": "k_EExternalGoogleAccount", 22 | "3": "k_EExternalFacebookAccount", 23 | "4": "k_EExternalTwitterAccount", 24 | "5": "k_EExternalTwitchAccount", 25 | "6": "k_EExternalYouTubeChannelAccount", 26 | "7": "k_EExternalFacebookPage", 27 | }; 28 | 29 | module.exports = EExternalAccountType; 30 | -------------------------------------------------------------------------------- /enums/EAuthSessionResponse.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAuthSessionResponse = { 9 | "OK": 0, 10 | "UserNotConnectedToSteam": 1, 11 | "NoLicenseOrExpired": 2, 12 | "VACBanned": 3, 13 | "LoggedInElseWhere": 4, 14 | "VACCheckTimedOut": 5, 15 | "AuthTicketCanceled": 6, 16 | "AuthTicketInvalidAlreadyUsed": 7, 17 | "AuthTicketInvalid": 8, 18 | "PublisherIssuedBan": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "OK", 22 | "1": "UserNotConnectedToSteam", 23 | "2": "NoLicenseOrExpired", 24 | "3": "VACBanned", 25 | "4": "LoggedInElseWhere", 26 | "5": "VACCheckTimedOut", 27 | "6": "AuthTicketCanceled", 28 | "7": "AuthTicketInvalidAlreadyUsed", 29 | "8": "AuthTicketInvalid", 30 | "9": "PublisherIssuedBan", 31 | }; 32 | 33 | module.exports = EAuthSessionResponse; 34 | -------------------------------------------------------------------------------- /enums/EChatRoomGroupAction.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomGroupAction = { 9 | "Default": 0, 10 | "CreateRenameDeleteChannel": 1, 11 | "Kick": 2, 12 | "Ban": 3, 13 | "Invite": 4, 14 | "ChangeTaglineAvatarName": 5, 15 | "Chat": 6, 16 | "ViewHistory": 7, 17 | "ChangeGroupRoles": 8, 18 | "ChangeUserRoles": 9, 19 | "MentionAll": 10, 20 | "SetWatchingBroadcast": 11, 21 | 22 | // Value-to-name mapping for convenience 23 | "0": "Default", 24 | "1": "CreateRenameDeleteChannel", 25 | "2": "Kick", 26 | "3": "Ban", 27 | "4": "Invite", 28 | "5": "ChangeTaglineAvatarName", 29 | "6": "Chat", 30 | "7": "ViewHistory", 31 | "8": "ChangeGroupRoles", 32 | "9": "ChangeUserRoles", 33 | "10": "MentionAll", 34 | "11": "SetWatchingBroadcast", 35 | }; 36 | 37 | module.exports = EChatRoomGroupAction; 38 | -------------------------------------------------------------------------------- /enums/ETouchGesture.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ETouchGesture = { 9 | "None": 0, 10 | "Touch": 1, 11 | "Tap": 2, 12 | "DoubleTap": 3, 13 | "ShortPress": 4, 14 | "LongPress": 5, 15 | "LongTap": 6, 16 | "TwoFingerTap": 7, 17 | "TapCancelled": 8, 18 | "PinchBegin": 9, 19 | "PinchUpdate": 10, 20 | "PinchEnd": 11, 21 | "FlingStart": 12, 22 | "FlingCancelled": 13, 23 | 24 | // Value-to-name mapping for convenience 25 | "0": "None", 26 | "1": "Touch", 27 | "2": "Tap", 28 | "3": "DoubleTap", 29 | "4": "ShortPress", 30 | "5": "LongPress", 31 | "6": "LongTap", 32 | "7": "TwoFingerTap", 33 | "8": "TapCancelled", 34 | "9": "PinchBegin", 35 | "10": "PinchUpdate", 36 | "11": "PinchEnd", 37 | "12": "FlingStart", 38 | "13": "FlingCancelled", 39 | }; 40 | 41 | module.exports = ETouchGesture; 42 | -------------------------------------------------------------------------------- /protobufs/steammessages_unified_base.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "google/protobuf/descriptor.proto"; 2 | 3 | option optimize_for = SPEED; 4 | option cc_generic_services = false; 5 | 6 | extend .google.protobuf.FieldOptions { 7 | optional string description = 50000; 8 | } 9 | 10 | extend .google.protobuf.ServiceOptions { 11 | optional string service_description = 50000; 12 | optional .EProtoExecutionSite service_execution_site = 50008 [default = k_EProtoExecutionSiteUnknown]; 13 | } 14 | 15 | extend .google.protobuf.MethodOptions { 16 | optional string method_description = 50000; 17 | } 18 | 19 | extend .google.protobuf.EnumOptions { 20 | optional string enum_description = 50000; 21 | } 22 | 23 | extend .google.protobuf.EnumValueOptions { 24 | optional string enum_value_description = 50000; 25 | } 26 | 27 | enum EProtoExecutionSite { 28 | k_EProtoExecutionSiteUnknown = 0; 29 | k_EProtoExecutionSiteSteamClient = 2; 30 | } 31 | 32 | message NoResponse { 33 | } 34 | -------------------------------------------------------------------------------- /enums/EVoiceCallState.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EVoiceCallState = { 9 | "None": 0, 10 | "ScheduledInitiate": 1, 11 | "RequestedMicAccess": 2, 12 | "LocalMicOnly": 3, 13 | "CreatePeerConnection": 4, 14 | "InitatedWebRTCSession": 5, 15 | "WebRTCConnectedWaitingOnIceConnected": 6, 16 | "RequestedPermission": 7, 17 | "NotifyingVoiceChatOfWebRTCSession": 8, 18 | "Connected": 9, 19 | 20 | // Value-to-name mapping for convenience 21 | "0": "None", 22 | "1": "ScheduledInitiate", 23 | "2": "RequestedMicAccess", 24 | "3": "LocalMicOnly", 25 | "4": "CreatePeerConnection", 26 | "5": "InitatedWebRTCSession", 27 | "6": "WebRTCConnectedWaitingOnIceConnected", 28 | "7": "RequestedPermission", 29 | "8": "NotifyingVoiceChatOfWebRTCSession", 30 | "9": "Connected", 31 | }; 32 | 33 | module.exports = EVoiceCallState; 34 | -------------------------------------------------------------------------------- /enums/EFriendFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EFriendFlags = { 9 | "None": 0, 10 | "Blocked": 1, 11 | "FriendshipRequested": 2, 12 | "Immediate": 4, 13 | "ClanMember": 8, 14 | "OnGameServer": 16, 15 | "RequestingFriendship": 128, 16 | "RequestingInfo": 256, 17 | "Ignored": 512, 18 | "IgnoredFriend": 1024, 19 | "Suggested": 2048, 20 | "ChatMember": 4096, 21 | "FlagAll": 65535, 22 | 23 | // Value-to-name mapping for convenience 24 | "0": "None", 25 | "1": "Blocked", 26 | "2": "FriendshipRequested", 27 | "4": "Immediate", 28 | "8": "ClanMember", 29 | "16": "OnGameServer", 30 | "128": "RequestingFriendship", 31 | "256": "RequestingInfo", 32 | "512": "Ignored", 33 | "1024": "IgnoredFriend", 34 | "2048": "Suggested", 35 | "4096": "ChatMember", 36 | "65535": "FlagAll", 37 | }; 38 | 39 | module.exports = EFriendFlags; 40 | -------------------------------------------------------------------------------- /examples/licensesdumper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SteamUser example - LicensesDumper 3 | * 4 | * Simply logs into Steam using account credentials and dumps your Steam licenses to file as JSON 5 | */ 6 | 7 | const fs = require('fs'); 8 | const SteamUser = require('../index.js'); // Replace this with `require('steam-user');` if used outside of the module directory 9 | const client = new SteamUser(); 10 | 11 | client.logOn({ 12 | accountName: 'username', 13 | password: 'password' 14 | }); 15 | 16 | client.on('loggedOn', function() { 17 | console.log('Logged into Steam as ' + client.steamID.getSteam3RenderedID()); 18 | }); 19 | 20 | client.on('licenses', function(licenses) { 21 | console.log('Our account owns ' + licenses.length + ' license' + (licenses.length == 1 ? '' : 's') + '.'); 22 | fs.writeFile('licenses.json', JSON.stringify(licenses, null, 4), 'utf8', function(error) { 23 | console.log(error || 'Successfully dumped our steam licenses to licenses.json'); 24 | }); 25 | 26 | client.logOff(); 27 | }); 28 | -------------------------------------------------------------------------------- /components/08-machineauth.js: -------------------------------------------------------------------------------- 1 | const SteamUserWeb = require('./07-web.js'); 2 | 3 | class SteamUserMachineAuth extends SteamUserWeb { 4 | _getMachineAuthFilename() { 5 | let accountName = (this._logOnDetails.account_name || this._logOnDetails._newAuthAccountName).toLowerCase(); 6 | return `machineAuthToken.${accountName}.txt`; 7 | } 8 | 9 | _handleNewMachineToken(machineToken) { 10 | this._machineAuthToken = machineToken; 11 | 12 | this.emit('machineAuthToken', machineToken); 13 | 14 | // We should always have an account name available here since this is only possible when logging on using an 15 | // account name and password. 16 | if (!this._logOnDetails.account_name && !this._logOnDetails._newAuthAccountName) { 17 | this._warn('Received new machine token, but no account name is available. This should never happen. Please alert the developer.'); 18 | return; 19 | } 20 | 21 | this._saveFile(this._getMachineAuthFilename(), Buffer.from(machineToken, 'utf8')); 22 | } 23 | } 24 | 25 | module.exports = SteamUserMachineAuth; 26 | -------------------------------------------------------------------------------- /enums/EBroadcastWatchLocation.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EBroadcastWatchLocation = { 9 | "Invalid": 0, 10 | "SteamTV_Tab": 1, 11 | "SteamTV_WatchParty": 2, 12 | "Chat_Tab": 3, 13 | "Chat_WatchParty": 4, 14 | "CommunityPage": 5, 15 | "StoreAppPage": 6, 16 | "InGame": 7, 17 | "BigPicture": 8, 18 | "SalesPage": 9, 19 | "CuratorPage": 10, 20 | "DeveloperPage": 11, 21 | "Chat_Friends": 12, 22 | "SteamTV_Web": 13, 23 | 24 | // Value-to-name mapping for convenience 25 | "0": "Invalid", 26 | "1": "SteamTV_Tab", 27 | "2": "SteamTV_WatchParty", 28 | "3": "Chat_Tab", 29 | "4": "Chat_WatchParty", 30 | "5": "CommunityPage", 31 | "6": "StoreAppPage", 32 | "7": "InGame", 33 | "8": "BigPicture", 34 | "9": "SalesPage", 35 | "10": "CuratorPage", 36 | "11": "DeveloperPage", 37 | "12": "Chat_Friends", 38 | "13": "SteamTV_Web", 39 | }; 40 | 41 | module.exports = EBroadcastWatchLocation; 42 | -------------------------------------------------------------------------------- /enums/EChatRoomEnterResponse.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatRoomEnterResponse = { 9 | "Success": 1, 10 | "DoesntExist": 2, 11 | "NotAllowed": 3, 12 | "Full": 4, 13 | "Error": 5, 14 | "Banned": 6, 15 | "Limited": 7, 16 | "ClanDisabled": 8, 17 | "CommunityBan": 9, 18 | "MemberBlockedYou": 10, 19 | "YouBlockedMember": 11, 20 | "NoRankingDataLobby": 12, // removed 21 | "NoRankingDataUser": 13, // removed 22 | "RankOutOfRange": 14, // removed 23 | 24 | // Value-to-name mapping for convenience 25 | "1": "Success", 26 | "2": "DoesntExist", 27 | "3": "NotAllowed", 28 | "4": "Full", 29 | "5": "Error", 30 | "6": "Banned", 31 | "7": "Limited", 32 | "8": "ClanDisabled", 33 | "9": "CommunityBan", 34 | "10": "MemberBlockedYou", 35 | "11": "YouBlockedMember", 36 | "12": "NoRankingDataLobby", 37 | "13": "NoRankingDataUser", 38 | "14": "RankOutOfRange", 39 | }; 40 | 41 | module.exports = EChatRoomEnterResponse; 42 | -------------------------------------------------------------------------------- /protobufs/steammessages_sitelicenseclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | 3 | option optimize_for = SPEED; 4 | option cc_generic_services = false; 5 | 6 | message CMsgClientSiteInfo { 7 | optional uint64 site_id = 1; 8 | optional string site_name = 2; 9 | optional bool allow_cached_credentials = 3; 10 | } 11 | 12 | message CMsgClientSiteLicenseCheckout { 13 | optional uint32 appid = 1; 14 | } 15 | 16 | message CMsgClientSiteLicenseCheckoutResponse { 17 | optional int32 eresult = 1 [default = 2]; 18 | } 19 | 20 | message CMsgClientSiteLicenseGetAvailableSeats { 21 | optional uint32 appid = 1; 22 | } 23 | 24 | message CMsgClientSiteLicenseGetAvailableSeatsResponse { 25 | optional int32 eresult = 1 [default = 2]; 26 | optional uint32 seats = 2; 27 | } 28 | 29 | message CMsgClientSiteLicenseGetContentCacheInfo { 30 | } 31 | 32 | message CMsgClientSiteLicenseGetContentCacheInfoResponse { 33 | optional bool use_cache = 1; 34 | optional uint32 ipv4_address = 2; 35 | optional uint32 port_number = 3; 36 | optional uint32 p2p_group = 4; 37 | optional string ip_address = 5; 38 | } 39 | -------------------------------------------------------------------------------- /enums/EStreamGamepadInputType.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @enum EStreamGamepadInputType 3 | */ 4 | module.exports = { 5 | Invalid: 0, 6 | DPadUp: 1, 7 | DPadDown: 2, 8 | DPadLeft: 4, 9 | DPadRight: 8, 10 | Start: 16, 11 | Back: 32, 12 | LeftThumb: 64, 13 | RightThumb: 128, 14 | LeftShoulder: 256, 15 | RightShoulder: 512, 16 | Guide: 1024, 17 | A: 4096, 18 | B: 8192, 19 | X: 16384, 20 | Y: 32768, 21 | LeftThumbX: 65536, 22 | LeftThumbY: 131072, 23 | RightThumbX: 262144, 24 | RightThumbY: 524288, 25 | LeftTrigger: 1048576, 26 | RightTrigger: 2097152, 27 | 28 | // Value-to-name mapping for convenience 29 | 0: 'Invalid', 30 | 1: 'DPadUp', 31 | 2: 'DPadDown', 32 | 4: 'DPadLeft', 33 | 8: 'DPadRight', 34 | 16: 'Start', 35 | 32: 'Back', 36 | 64: 'LeftThumb', 37 | 128: 'RightThumb', 38 | 256: 'LeftShoulder', 39 | 512: 'RightShoulder', 40 | 1024: 'Guide', 41 | 4096: 'A', 42 | 8192: 'B', 43 | 16384: 'X', 44 | 32768: 'Y', 45 | 65536: 'LeftThumbX', 46 | 131072: 'LeftThumbY', 47 | 262144: 'RightThumbX', 48 | 524288: 'RightThumbY', 49 | 1048576: 'LeftTrigger', 50 | 2097152: 'RightTrigger', 51 | }; 52 | -------------------------------------------------------------------------------- /enums/EChatAction.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatAction = { 9 | "InviteChat": 1, 10 | "Kick": 2, 11 | "Ban": 3, 12 | "UnBan": 4, 13 | "StartVoiceSpeak": 5, 14 | "EndVoiceSpeak": 6, 15 | "LockChat": 7, 16 | "UnlockChat": 8, 17 | "CloseChat": 9, 18 | "SetJoinable": 10, 19 | "SetUnjoinable": 11, 20 | "SetOwner": 12, 21 | "SetInvisibleToFriends": 13, 22 | "SetVisibleToFriends": 14, 23 | "SetModerated": 15, 24 | "SetUnmoderated": 16, 25 | 26 | // Value-to-name mapping for convenience 27 | "1": "InviteChat", 28 | "2": "Kick", 29 | "3": "Ban", 30 | "4": "UnBan", 31 | "5": "StartVoiceSpeak", 32 | "6": "EndVoiceSpeak", 33 | "7": "LockChat", 34 | "8": "UnlockChat", 35 | "9": "CloseChat", 36 | "10": "SetJoinable", 37 | "11": "SetUnjoinable", 38 | "12": "SetOwner", 39 | "13": "SetInvisibleToFriends", 40 | "14": "SetVisibleToFriends", 41 | "15": "SetModerated", 42 | "16": "SetUnmoderated", 43 | }; 44 | 45 | module.exports = EChatAction; 46 | -------------------------------------------------------------------------------- /enums/ERemoteDeviceStreamingResult.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERemoteDeviceStreamingResult = { 9 | "Success": 0, 10 | "Unauthorized": 1, 11 | "ScreenLocked": 2, 12 | "Failed": 3, 13 | "Busy": 4, 14 | "InProgress": 5, 15 | "Canceled": 6, 16 | "DriversNotInstalled": 7, 17 | "Disabled": 8, 18 | "BroadcastingActive": 9, 19 | "VRActive": 10, 20 | "PINRequired": 11, 21 | "TransportUnavailable": 12, 22 | "Invisible": 13, 23 | "GameLaunchFailed": 14, 24 | 25 | // Value-to-name mapping for convenience 26 | "0": "Success", 27 | "1": "Unauthorized", 28 | "2": "ScreenLocked", 29 | "3": "Failed", 30 | "4": "Busy", 31 | "5": "InProgress", 32 | "6": "Canceled", 33 | "7": "DriversNotInstalled", 34 | "8": "Disabled", 35 | "9": "BroadcastingActive", 36 | "10": "VRActive", 37 | "11": "PINRequired", 38 | "12": "TransportUnavailable", 39 | "13": "Invisible", 40 | "14": "GameLaunchFailed", 41 | }; 42 | 43 | module.exports = ERemoteDeviceStreamingResult; 44 | -------------------------------------------------------------------------------- /enums/EStoreDiscoveryQueueType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:46:03 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStoreDiscoveryQueueType = { 9 | "New": 0, 10 | "ComingSoon": 1, 11 | "Recommended": 2, 12 | "EveryNewRelease": 3, 13 | "MLRecommender": 5, 14 | "WishlistOnSale": 6, 15 | "DLC": 7, 16 | "DLCOnSale": 8, 17 | "RecommendedComingSoon": 9, 18 | "RecommendedFree": 10, 19 | "RecommendedOnSale": 11, 20 | "RecommendedDemos": 12, 21 | "DLCNewReleases": 13, 22 | "DLCTopSellers": 14, 23 | "MAX": 15, 24 | 25 | // Value-to-name mapping for convenience 26 | "0": "New", 27 | "1": "ComingSoon", 28 | "2": "Recommended", 29 | "3": "EveryNewRelease", 30 | "5": "MLRecommender", 31 | "6": "WishlistOnSale", 32 | "7": "DLC", 33 | "8": "DLCOnSale", 34 | "9": "RecommendedComingSoon", 35 | "10": "RecommendedFree", 36 | "11": "RecommendedOnSale", 37 | "12": "RecommendedDemos", 38 | "13": "DLCNewReleases", 39 | "14": "DLCTopSellers", 40 | "15": "MAX", 41 | }; 42 | 43 | module.exports = EStoreDiscoveryQueueType; 44 | -------------------------------------------------------------------------------- /components/classes/CMAuthTransport.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line 2 | const {ApiRequest, ApiResponse} = require('steam-session'); 3 | 4 | const EMsg = require('../../enums/EMsg.js'); 5 | 6 | class CMAuthTransport { 7 | /** 8 | * @param {SteamUserMessages} steamUser 9 | */ 10 | constructor(steamUser) { 11 | this._user = steamUser; 12 | } 13 | 14 | /** 15 | * 16 | * @param {ApiRequest} request 17 | * @returns {Promise} 18 | */ 19 | sendRequest(request) { 20 | return new Promise((resolve) => { 21 | this._user._send({ 22 | msg: this._user.steamID ? EMsg.ServiceMethodCallFromClient : EMsg.ServiceMethodCallFromClientNonAuthed, 23 | proto: { 24 | target_job_name: `${request.apiInterface}.${request.apiMethod}#${request.apiVersion}`, 25 | realm: 1 26 | } 27 | }, request.requestData, (body, hdr) => { 28 | resolve({ 29 | result: hdr.proto.eresult, 30 | errorMessage: hdr.proto.error_message, 31 | responseData: body.toBuffer() 32 | }); 33 | }); 34 | }); 35 | } 36 | 37 | close() { 38 | // do nothing 39 | } 40 | } 41 | 42 | module.exports = CMAuthTransport; 43 | -------------------------------------------------------------------------------- /examples/databasedownloader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SteamUser example - DatabaseDownloader 3 | * 4 | * Logs onto Steam anonymously and downloads app data for Team Fortress 2 and Counter-Strike: Global Offensive. 5 | */ 6 | 7 | const SteamUser = require('../index.js'); // Replace this with `require('steam-user');` if used outside of the module directory 8 | const FS = require('fs'); 9 | 10 | let client = new SteamUser(); 11 | client.logOn(); // Log onto Steam anonymously 12 | 13 | client.on('loggedOn', async (details) => { 14 | console.log('Logged onto Steam as ' + client.steamID.steam3()); 15 | 16 | console.log('Requesting appinfo for TF2 and CS:GO...'); 17 | let result = await client.getProductInfo([440, 730], [], true); // Passing true as the third argument automatically requests access tokens, which are required for some apps 18 | 19 | console.log('Got app info, writing to files'); 20 | console.log(result); 21 | 22 | for (let appid in result.apps) { 23 | FS.writeFileSync(appid + '.json', JSON.stringify(result.apps[appid].appinfo, null, '\t')); 24 | } 25 | 26 | console.log('Logging off of Steam'); 27 | client.logOff(); 28 | }); 29 | -------------------------------------------------------------------------------- /enums/EChatEntryType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatEntryType = { 9 | "Invalid": 0, 10 | "ChatMsg": 1, 11 | "Typing": 2, 12 | "InviteGame": 3, 13 | "Emote": 4, // removed "No longer supported by clients" 14 | "LobbyGameStart": 5, // removed "Listen for LobbyGameCreated_t callback instead" 15 | "LeftConversation": 6, 16 | "Entered": 7, 17 | "WasKicked": 8, 18 | "WasBanned": 9, 19 | "Disconnected": 10, 20 | "HistoricalChat": 11, 21 | "Reserved1": 12, 22 | "Reserved2": 13, 23 | "LinkBlocked": 14, 24 | 25 | // Value-to-name mapping for convenience 26 | "0": "Invalid", 27 | "1": "ChatMsg", 28 | "2": "Typing", 29 | "3": "InviteGame", 30 | "4": "Emote", 31 | "5": "LobbyGameStart", 32 | "6": "LeftConversation", 33 | "7": "Entered", 34 | "8": "WasKicked", 35 | "9": "WasBanned", 36 | "10": "Disconnected", 37 | "11": "HistoricalChat", 38 | "12": "Reserved1", 39 | "13": "Reserved2", 40 | "14": "LinkBlocked", 41 | }; 42 | 43 | module.exports = EChatEntryType; 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Alex Corn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /components/store.js: -------------------------------------------------------------------------------- 1 | const StdLib = require('@doctormckay/stdlib'); 2 | 3 | const SteamUserPubFiles = require('./pubfiles.js'); 4 | 5 | class SteamUserStore extends SteamUserPubFiles { 6 | /** 7 | * Get the localized names for given store tags. 8 | * @param {string} language - The full name of the language you're interested in, e.g. "english" or "spanish" 9 | * @param {int[]} tagIDs - The IDs of the tags you're interested in 10 | * @param {function} [callback] 11 | * @return {Promise} 12 | */ 13 | getStoreTagNames(language, tagIDs, callback) { 14 | return StdLib.Promises.timeoutCallbackPromise(10000, ['tags'], callback, (resolve, reject) => { 15 | this._sendUnified('Store.GetLocalizedNameForTags#1', {language, tagids: tagIDs}, (body) => { 16 | if (body.tags.length == 0) { 17 | return reject(new Error('Unable to get tag data; is your language correct?')); 18 | } 19 | 20 | let tags = {}; 21 | body.tags.forEach((tag) => { 22 | tags[tag.tagid] = {name: tag.name, englishName: tag.english_name}; 23 | }); 24 | 25 | resolve({tags}); 26 | }); 27 | }); 28 | } 29 | } 30 | 31 | module.exports = SteamUserStore; 32 | -------------------------------------------------------------------------------- /protobufs/steammessages_gamenetworking.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | message CGameNetworking_AllocateFakeIP_Request { 7 | optional uint32 app_id = 1; 8 | optional uint32 num_fake_ports = 2; 9 | } 10 | 11 | message CGameNetworking_AllocateFakeIP_Response { 12 | optional fixed32 fake_ip = 1; 13 | repeated uint32 fake_ports = 2; 14 | } 15 | 16 | message CGameNetworking_ReleaseFakeIP_Notification { 17 | optional uint32 app_id = 1; 18 | optional fixed32 fake_ip = 2; 19 | repeated uint32 fake_ports = 3; 20 | } 21 | 22 | service GameNetworking { 23 | option (service_description) = "Services that support P2P networking"; 24 | 25 | rpc AllocateFakeIP (.CGameNetworking_AllocateFakeIP_Request) returns (.CGameNetworking_AllocateFakeIP_Response) { 26 | option (method_description) = "Client is asking to lease a FakeIP."; 27 | } 28 | 29 | rpc NotifyReleaseFakeIP (.CGameNetworking_ReleaseFakeIP_Notification) returns (.NoResponse) { 30 | option (method_description) = "Client informs server it is done with the FakeIP."; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /protobufs/steammessages_lobbymatchmaking.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | enum ELobbyStatus { 7 | k_ELobbyStatusInvalid = 0; 8 | k_ELobbyStatusExists = 1; 9 | k_ELobbyStatusDoesNotExist = 2; 10 | k_ELobbyStatusNotAMember = 3; 11 | } 12 | 13 | message LobbyMatchmakingLegacy_GetLobbyStatus_Request { 14 | optional uint32 app_id = 1; 15 | optional fixed64 steamid_lobby = 2; 16 | optional bool claim_ownership = 3; 17 | optional bool claim_membership = 4; 18 | optional uint32 version_num = 5; 19 | } 20 | 21 | message LobbyMatchmakingLegacy_GetLobbyStatus_Response { 22 | optional uint32 app_id = 1; 23 | optional fixed64 steamid_lobby = 2; 24 | optional .ELobbyStatus lobby_status = 3 [default = k_ELobbyStatusInvalid]; 25 | } 26 | 27 | service LobbyMatchmakingLegacy { 28 | option (service_description) = "Lobby matchmaking legacy service"; 29 | 30 | rpc GetLobbyStatus (.LobbyMatchmakingLegacy_GetLobbyStatus_Request) returns (.LobbyMatchmakingLegacy_GetLobbyStatus_Response) { 31 | option (method_description) = "GetLobbyStatus"; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /enums/EAppType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppType = { 9 | "Invalid": 0, 10 | "Game": 1, 11 | "Application": 2, 12 | "Tool": 4, 13 | "Demo": 8, 14 | "Deprected": 16, 15 | "DLC": 32, 16 | "Guide": 64, 17 | "Driver": 128, 18 | "Config": 256, 19 | "Hardware": 512, 20 | "Franchise": 1024, 21 | "Video": 2048, 22 | "Plugin": 4096, 23 | "Music": 8192, 24 | "Series": 16384, 25 | "Comic": 32768, 26 | "Beta": 65536, 27 | "Shortcut": 1073741824, 28 | "DepotOnly": -2147483648, 29 | 30 | // Value-to-name mapping for convenience 31 | "0": "Invalid", 32 | "1": "Game", 33 | "2": "Application", 34 | "4": "Tool", 35 | "8": "Demo", 36 | "16": "Deprected", 37 | "32": "DLC", 38 | "64": "Guide", 39 | "128": "Driver", 40 | "256": "Config", 41 | "512": "Hardware", 42 | "1024": "Franchise", 43 | "2048": "Video", 44 | "4096": "Plugin", 45 | "8192": "Music", 46 | "16384": "Series", 47 | "32768": "Comic", 48 | "65536": "Beta", 49 | "1073741824": "Shortcut", 50 | "-2147483648": "DepotOnly", 51 | }; 52 | 53 | module.exports = EAppType; 54 | -------------------------------------------------------------------------------- /enums/EDenyReason.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EDenyReason = { 9 | "InvalidVersion": 1, 10 | "Generic": 2, 11 | "NotLoggedOn": 3, 12 | "NoLicense": 4, 13 | "Cheater": 5, 14 | "LoggedInElseWhere": 6, 15 | "UnknownText": 7, 16 | "IncompatibleAnticheat": 8, 17 | "MemoryCorruption": 9, 18 | "IncompatibleSoftware": 10, 19 | "SteamConnectionLost": 11, 20 | "SteamConnectionError": 12, 21 | "SteamResponseTimedOut": 13, 22 | "SteamValidationStalled": 14, 23 | "SteamOwnerLeftGuestUser": 15, 24 | 25 | // Value-to-name mapping for convenience 26 | "1": "InvalidVersion", 27 | "2": "Generic", 28 | "3": "NotLoggedOn", 29 | "4": "NoLicense", 30 | "5": "Cheater", 31 | "6": "LoggedInElseWhere", 32 | "7": "UnknownText", 33 | "8": "IncompatibleAnticheat", 34 | "9": "MemoryCorruption", 35 | "10": "IncompatibleSoftware", 36 | "11": "SteamConnectionLost", 37 | "12": "SteamConnectionError", 38 | "13": "SteamResponseTimedOut", 39 | "14": "SteamValidationStalled", 40 | "15": "SteamOwnerLeftGuestUser", 41 | }; 42 | 43 | module.exports = EDenyReason; 44 | -------------------------------------------------------------------------------- /enums/EPersonaStateFlag.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EPersonaStateFlag = { 9 | "HasRichPresence": 1, 10 | "InJoinableGame": 2, 11 | "Golden": 4, 12 | "RemotePlayTogether": 8, 13 | "OnlineUsingWeb": 256, // removed "renamed to ClientTypeWeb" 14 | "ClientTypeWeb": 256, 15 | "OnlineUsingMobile": 512, // removed "renamed to ClientTypeMobile" 16 | "ClientTypeMobile": 512, 17 | "OnlineUsingBigPicture": 1024, // removed "renamed to ClientTypeTenfoot" 18 | "ClientTypeTenfoot": 1024, 19 | "OnlineUsingVR": 2048, // removed "renamed to ClientTypeVR" 20 | "ClientTypeVR": 2048, 21 | "LaunchTypeGamepad": 4096, 22 | "LaunchTypeCompatTool": 8192, 23 | 24 | // Value-to-name mapping for convenience 25 | "1": "HasRichPresence", 26 | "2": "InJoinableGame", 27 | "4": "Golden", 28 | "8": "RemotePlayTogether", 29 | "256": "ClientTypeWeb", 30 | "512": "ClientTypeMobile", 31 | "1024": "ClientTypeTenfoot", 32 | "2048": "ClientTypeVR", 33 | "4096": "LaunchTypeGamepad", 34 | "8192": "LaunchTypeCompatTool", 35 | }; 36 | 37 | module.exports = EPersonaStateFlag; 38 | -------------------------------------------------------------------------------- /examples/lib/collect_credentials.js: -------------------------------------------------------------------------------- 1 | const {createInterface} = require('readline'); 2 | 3 | /** 4 | * @returns {Promise<{accountName: string, password: string}>} 5 | */ 6 | module.exports = async function collectCredentials() { 7 | let accountName = await promptAsync('Account Name: '); 8 | let password = await promptAsync('Password: ', true); 9 | return {accountName, password}; 10 | }; 11 | 12 | /** 13 | * 14 | * @param {string} question 15 | * @param {boolean} [sensitiveInput=false] 16 | * @return Promise 17 | */ 18 | function promptAsync(question, sensitiveInput) { 19 | return new Promise((resolve) => { 20 | let rl = createInterface({ 21 | input: process.stdin, 22 | output: sensitiveInput ? null : process.stdout, 23 | terminal: true 24 | }); 25 | 26 | if (sensitiveInput) { 27 | // We have to write the question manually if we didn't give readline an output stream 28 | process.stdout.write(`${question.trim()} [masked] `); 29 | } 30 | 31 | rl.question(question, (result) => { 32 | if (sensitiveInput) { 33 | // We have to manually print a newline 34 | process.stdout.write('\n'); 35 | } 36 | 37 | rl.close(); 38 | resolve(result); 39 | }); 40 | }); 41 | } 42 | -------------------------------------------------------------------------------- /enums/EBillingType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EBillingType = { 9 | "NoCost": 0, 10 | "BillOnceOnly": 1, 11 | "BillMonthly": 2, 12 | "ProofOfPrepurchaseOnly": 3, 13 | "GuestPass": 4, 14 | "HardwarePromo": 5, 15 | "Gift": 6, 16 | "AutoGrant": 7, 17 | "OEMTicket": 8, 18 | "RecurringOption": 9, 19 | "BillOnceOrCDKey": 10, 20 | "Repurchaseable": 11, 21 | "FreeOnDemand": 12, 22 | "Rental": 13, 23 | "CommercialLicense": 14, 24 | "FreeCommercialLicense": 15, 25 | "NumBillingTypes": 16, 26 | 27 | // Value-to-name mapping for convenience 28 | "0": "NoCost", 29 | "1": "BillOnceOnly", 30 | "2": "BillMonthly", 31 | "3": "ProofOfPrepurchaseOnly", 32 | "4": "GuestPass", 33 | "5": "HardwarePromo", 34 | "6": "Gift", 35 | "7": "AutoGrant", 36 | "8": "OEMTicket", 37 | "9": "RecurringOption", 38 | "10": "BillOnceOrCDKey", 39 | "11": "Repurchaseable", 40 | "12": "FreeOnDemand", 41 | "13": "Rental", 42 | "14": "CommercialLicense", 43 | "15": "FreeCommercialLicense", 44 | "16": "NumBillingTypes", 45 | }; 46 | 47 | module.exports = EBillingType; 48 | -------------------------------------------------------------------------------- /enums/EClientPersonaStateFlag.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EClientPersonaStateFlag = { 9 | "Status": 1, 10 | "PlayerName": 2, 11 | "QueryPort": 4, 12 | "SourceID": 8, 13 | "Presence": 16, 14 | "Metadata": 32, // removed 15 | "LastSeen": 64, 16 | "ClanInfo": 128, // obsolete "renamed to UserClanRank" 17 | "UserClanRank": 128, 18 | "GameExtraInfo": 256, 19 | "GameDataBlob": 512, 20 | "ClanTag": 1024, // obsolete "renamed to ClanData" 21 | "ClanData": 1024, 22 | "Facebook": 2048, 23 | "RichPresence": 4096, 24 | "Broadcast": 8192, 25 | "Watching": 16384, 26 | 27 | // Value-to-name mapping for convenience 28 | "1": "Status", 29 | "2": "PlayerName", 30 | "4": "QueryPort", 31 | "8": "SourceID", 32 | "16": "Presence", 33 | "32": "Metadata", 34 | "64": "LastSeen", 35 | "128": "UserClanRank", 36 | "256": "GameExtraInfo", 37 | "512": "GameDataBlob", 38 | "1024": "ClanData", 39 | "2048": "Facebook", 40 | "4096": "RichPresence", 41 | "8192": "Broadcast", 42 | "16384": "Watching", 43 | }; 44 | 45 | module.exports = EClientPersonaStateFlag; 46 | -------------------------------------------------------------------------------- /protobufs/steammessages_clientlanp2p.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | 3 | option optimize_for = SPEED; 4 | option cc_generic_services = false; 5 | 6 | message CMsgClientLANP2PRequestChunks { 7 | message ChunkKey { 8 | optional uint32 depot_id = 1; 9 | optional bytes sha = 2; 10 | } 11 | 12 | repeated .CMsgClientLANP2PRequestChunks.ChunkKey chunk_keys = 1; 13 | } 14 | 15 | message CMsgClientLANP2PRequestChunksResponse { 16 | message ChunkData { 17 | optional uint32 result = 1; 18 | optional uint32 depot_id = 2; 19 | optional bytes sha = 3; 20 | optional bytes chunk_data = 4; 21 | optional bool encrypted = 5; 22 | optional bool compressed = 6; 23 | } 24 | 25 | repeated .CMsgClientLANP2PRequestChunksResponse.ChunkData chunk_responses = 1; 26 | } 27 | 28 | message CMsgClientPeerChunkRequest { 29 | optional uint32 app_id = 1; 30 | optional uint32 depot_id = 2; 31 | optional bytes sha = 3; 32 | } 33 | 34 | message CMsgClientPeerChunkResponse { 35 | optional uint32 result = 1; 36 | optional uint32 app_id = 2; 37 | optional uint32 depot_id = 3; 38 | optional bytes sha = 4; 39 | optional bool encrypted = 5; 40 | optional bool compressed = 6; 41 | optional bytes chunk_data = 7; 42 | } 43 | -------------------------------------------------------------------------------- /components/04-utility.js: -------------------------------------------------------------------------------- 1 | const CurrencyData = require('../resources/CurrencyData.js'); 2 | 3 | const SteamUserMessages = require('./03-messages.js'); 4 | 5 | class SteamUserUtility extends SteamUserMessages { 6 | /** 7 | * @param {number} amount 8 | * @param {ECurrencyCode} currency 9 | * @returns {string} 10 | */ 11 | static formatCurrency(amount, currency) { 12 | let amountString = amount.toFixed(2); 13 | 14 | if (!CurrencyData[currency]) { 15 | return amountString; 16 | } 17 | 18 | let data = CurrencyData[currency]; 19 | 20 | if (data.whole) { 21 | amountString = amountString.replace('.00', ''); 22 | } 23 | 24 | if (data.commas) { 25 | amountString = amountString.replace('.', ','); 26 | } 27 | 28 | return (data.prepend || '') + amountString + (data.append || ''); 29 | } 30 | 31 | /** 32 | * Same as emit() except the second argument (the first provided to the callback function) is a SteamID and will be appended to the event name with a hash. 33 | * @protected 34 | */ 35 | _emitIdEvent() { 36 | this.emit.apply(this, arguments); 37 | arguments[0] += '#' + arguments[1].getSteamID64(); 38 | this.emit.apply(this, arguments); 39 | } 40 | } 41 | 42 | module.exports = SteamUserUtility; 43 | -------------------------------------------------------------------------------- /enums/ECommunityItemClass.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ECommunityItemClass = { 9 | "Invalid": 0, 10 | "Badge": 1, 11 | "GameCard": 2, 12 | "ProfileBackground": 3, 13 | "Emoticon": 4, 14 | "BoosterPack": 5, 15 | "Consumable": 6, 16 | "GameGoo": 7, 17 | "ProfileModifier": 8, 18 | "Scene": 9, 19 | "SalienItem": 10, 20 | "Sticker": 11, 21 | "ChatEffect": 12, 22 | "MiniProfileBackground": 13, 23 | "AvatarFrame": 14, 24 | "AnimatedAvatar": 15, 25 | "SteamDeckKeyboardSkin": 16, 26 | "SteamDeckStartupMovie": 17, 27 | 28 | // Value-to-name mapping for convenience 29 | "0": "Invalid", 30 | "1": "Badge", 31 | "2": "GameCard", 32 | "3": "ProfileBackground", 33 | "4": "Emoticon", 34 | "5": "BoosterPack", 35 | "6": "Consumable", 36 | "7": "GameGoo", 37 | "8": "ProfileModifier", 38 | "9": "Scene", 39 | "10": "SalienItem", 40 | "11": "Sticker", 41 | "12": "ChatEffect", 42 | "13": "MiniProfileBackground", 43 | "14": "AvatarFrame", 44 | "15": "AnimatedAvatar", 45 | "16": "SteamDeckKeyboardSkin", 46 | "17": "SteamDeckStartupMovie", 47 | }; 48 | 49 | module.exports = ECommunityItemClass; 50 | -------------------------------------------------------------------------------- /enums/ERemoteClientBroadcastMsg.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Sun Aug 28 2022 18:40:14 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ERemoteClientBroadcastMsg = { 9 | "Discovery": 0, 10 | "Status": 1, 11 | "Offline": 2, 12 | "AuthorizationRequest": 3, 13 | "AuthorizationResponse": 4, 14 | "StreamingRequest": 5, 15 | "StreamingResponse": 6, 16 | "ProofRequest": 7, 17 | "ProofResponse": 8, 18 | "AuthorizationCancelRequest": 9, 19 | "StreamingCancelRequest": 10, 20 | "ClientIDDeconflict": 11, 21 | "StreamTransportSignal": 12, 22 | "StreamingProgress": 13, 23 | "AuthorizationConfirmed": 14, 24 | 25 | // Value-to-name mapping for convenience 26 | "0": "Discovery", 27 | "1": "Status", 28 | "2": "Offline", 29 | "3": "AuthorizationRequest", 30 | "4": "AuthorizationResponse", 31 | "5": "StreamingRequest", 32 | "6": "StreamingResponse", 33 | "7": "ProofRequest", 34 | "8": "ProofResponse", 35 | "9": "AuthorizationCancelRequest", 36 | "10": "StreamingCancelRequest", 37 | "11": "ClientIDDeconflict", 38 | "12": "StreamTransportSignal", 39 | "13": "StreamingProgress", 40 | "14": "AuthorizationConfirmed", 41 | }; 42 | 43 | module.exports = ERemoteClientBroadcastMsg; 44 | -------------------------------------------------------------------------------- /enums/EStreamFrameEvent.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EStreamFrameEvent = { 9 | "InputEventStart": 0, 10 | "InputEventSend": 1, 11 | "InputEventRecv": 2, 12 | "InputEventQueued": 3, 13 | "InputEventHandled": 4, 14 | "Start": 5, 15 | "CaptureBegin": 6, 16 | "CaptureEnd": 7, 17 | "ConvertBegin": 8, 18 | "ConvertEnd": 9, 19 | "EncodeBegin": 10, 20 | "EncodeEnd": 11, 21 | "Send": 12, 22 | "Recv": 13, 23 | "DecodeBegin": 14, 24 | "DecodeEnd": 15, 25 | "UploadBegin": 16, 26 | "UploadEnd": 17, 27 | "Complete": 18, 28 | 29 | // Value-to-name mapping for convenience 30 | "0": "InputEventStart", 31 | "1": "InputEventSend", 32 | "2": "InputEventRecv", 33 | "3": "InputEventQueued", 34 | "4": "InputEventHandled", 35 | "5": "Start", 36 | "6": "CaptureBegin", 37 | "7": "CaptureEnd", 38 | "8": "ConvertBegin", 39 | "9": "ConvertEnd", 40 | "10": "EncodeBegin", 41 | "11": "EncodeEnd", 42 | "12": "Send", 43 | "13": "Recv", 44 | "14": "DecodeBegin", 45 | "15": "DecodeEnd", 46 | "16": "UploadBegin", 47 | "17": "UploadEnd", 48 | "18": "Complete", 49 | }; 50 | 51 | module.exports = EStreamFrameEvent; 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | test.js 3 | test/ 4 | resources/servers.json 5 | dev_data.json 6 | dev/ 7 | 8 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 9 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 10 | 11 | # User-specific stuff: 12 | .idea/**/workspace.xml 13 | .idea/**/tasks.xml 14 | .idea/dictionaries 15 | .idea/httpRequests/ 16 | 17 | # Sensitive or high-churn files: 18 | .idea/**/dataSources/ 19 | .idea/**/dataSources.ids 20 | .idea/**/dataSources.local.xml 21 | .idea/**/sqlDataSources.xml 22 | .idea/**/dynamic.xml 23 | .idea/**/uiDesigner.xml 24 | 25 | # Gradle: 26 | .idea/**/gradle.xml 27 | .idea/**/libraries 28 | 29 | # CMake 30 | cmake-build-debug/ 31 | cmake-build-release/ 32 | 33 | # Mongo Explorer plugin: 34 | .idea/**/mongoSettings.xml 35 | 36 | ## File-based project format: 37 | *.iws 38 | 39 | ## Plugin-specific files: 40 | 41 | # IntelliJ 42 | out/ 43 | 44 | # mpeltonen/sbt-idea plugin 45 | .idea_modules/ 46 | 47 | # JIRA plugin 48 | atlassian-ide-plugin.xml 49 | 50 | # Cursive Clojure plugin 51 | .idea/replstate.xml 52 | 53 | # Crashlytics plugin (for Android Studio and IntelliJ) 54 | com_crashlytics_export_strings.xml 55 | crashlytics.properties 56 | crashlytics-build.properties 57 | fabric.properties 58 | -------------------------------------------------------------------------------- /protobufs/steamnetworkingsockets_messages_certs.proto: -------------------------------------------------------------------------------- 1 | option optimize_for = SPEED; 2 | option cc_generic_services = false; 3 | 4 | message CMsgSteamNetworkingIdentityLegacyBinary { 5 | optional fixed64 steam_id = 16; 6 | optional string xbox_pairwise_id = 17; 7 | optional bytes generic_bytes = 2; 8 | optional string generic_string = 3; 9 | optional bytes ipv6_and_port = 4; 10 | } 11 | 12 | message CMsgSteamDatagramCertificate { 13 | enum EKeyType { 14 | INVALID = 0; 15 | ED25519 = 1; 16 | } 17 | 18 | optional .CMsgSteamDatagramCertificate.EKeyType key_type = 1 [default = INVALID]; 19 | optional bytes key_data = 2; 20 | optional fixed64 legacy_steam_id = 4; 21 | optional .CMsgSteamNetworkingIdentityLegacyBinary legacy_identity_binary = 11; 22 | optional string identity_string = 12; 23 | repeated fixed32 gameserver_datacenter_ids = 5; 24 | optional fixed32 time_created = 8; 25 | optional fixed32 time_expiry = 9; 26 | repeated uint32 app_ids = 10; 27 | repeated string ip_addresses = 13; 28 | } 29 | 30 | message CMsgSteamDatagramCertificateSigned { 31 | optional bytes cert = 4; 32 | optional fixed64 ca_key_id = 5; 33 | optional bytes ca_signature = 6; 34 | optional bytes private_key_data = 1; 35 | } 36 | 37 | message CMsgSteamDatagramCertificateRequest { 38 | optional .CMsgSteamDatagramCertificate cert = 1; 39 | } 40 | -------------------------------------------------------------------------------- /protobufs/steammessages_secrets.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | enum EKeyEscrowUsage { 7 | k_EKeyEscrowUsageStreamingDevice = 0; 8 | } 9 | 10 | message CKeyEscrow_Request { 11 | optional bytes rsa_oaep_sha_ticket = 1; 12 | optional bytes password = 2; 13 | optional .EKeyEscrowUsage usage = 3 [default = k_EKeyEscrowUsageStreamingDevice]; 14 | optional string device_name = 4; 15 | } 16 | 17 | message CKeyEscrow_Ticket { 18 | optional bytes password = 1; 19 | optional uint64 identifier = 2; 20 | optional bytes payload = 3; 21 | optional uint32 timestamp = 4; 22 | optional .EKeyEscrowUsage usage = 5 [default = k_EKeyEscrowUsageStreamingDevice]; 23 | optional string device_name = 6; 24 | optional string device_model = 7; 25 | optional string device_serial = 8; 26 | optional uint32 device_provisioning_id = 9; 27 | } 28 | 29 | message CKeyEscrow_Response { 30 | optional .CKeyEscrow_Ticket ticket = 1; 31 | } 32 | 33 | service Secrets { 34 | option (service_description) = "Service for accessing credentials and guarding secrets"; 35 | 36 | rpc KeyEscrow (.CKeyEscrow_Request) returns (.CKeyEscrow_Response) { 37 | option (method_description) = "Service to perform authenticated key-exchange involving Steam Client"; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /protobufs/contenthubs.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | 3 | option optimize_for = SPEED; 4 | option cc_generic_services = true; 5 | option (force_php_generation) = true; 6 | 7 | enum EContentHubDiscountFilterType { 8 | k_EContentHubDiscountFilterType_None = 0; 9 | k_EContentHubDiscountFilterType_DiscountsOnly = 1; 10 | k_EContentHubDiscountFilterType_PrioritizeDiscounts = 2; 11 | } 12 | 13 | message CStorePageFilter { 14 | message SalePageFilter { 15 | optional uint32 sale_tagid = 1; 16 | } 17 | 18 | message ContentHubFilter { 19 | message OptInInfo { 20 | optional string name = 1; 21 | optional uint32 optin_tagid = 2; 22 | optional uint32 prune_tagid = 3; 23 | optional bool optin_only = 4; 24 | } 25 | 26 | optional string hub_type = 1; 27 | optional string hub_category = 2; 28 | optional uint32 hub_tagid = 3; 29 | optional .EContentHubDiscountFilterType discount_filter = 4 [default = k_EContentHubDiscountFilterType_None]; 30 | optional .CStorePageFilter.ContentHubFilter.OptInInfo optin = 5; 31 | } 32 | 33 | message StoreFilter { 34 | optional string filter_json = 1; 35 | optional string cache_key = 2; 36 | } 37 | 38 | optional .CStorePageFilter.SalePageFilter sale_filter = 1; 39 | optional .CStorePageFilter.ContentHubFilter content_hub_filter = 2; 40 | repeated .CStorePageFilter.StoreFilter store_filters = 3; 41 | } 42 | -------------------------------------------------------------------------------- /enums/EAppInfoSection.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EAppInfoSection = { 9 | "Unknown": 0, 10 | "All": 1, 11 | "First": 2, 12 | "Common": 2, 13 | "Extended": 3, 14 | "Config": 4, 15 | "Stats": 5, 16 | "Install": 6, 17 | "Depots": 7, 18 | "VAC": 8, // removed 19 | "VAC_UNUSED": 8, // removed 20 | "DRM": 9, // removed 21 | "DRM_UNUSED": 9, // removed 22 | "UFS": 10, 23 | "OGG": 11, 24 | "Items": 12, // removed 25 | "ItemsUNUSED": 12, // removed 26 | "Policies": 13, 27 | "SysReqs": 14, 28 | "Community": 15, 29 | "Store": 16, 30 | "Localization": 17, 31 | "Broadcastgamedata": 18, 32 | "Computed": 19, 33 | "Albummetadata": 20, 34 | 35 | // Value-to-name mapping for convenience 36 | "0": "Unknown", 37 | "1": "All", 38 | "2": "Common", 39 | "3": "Extended", 40 | "4": "Config", 41 | "5": "Stats", 42 | "6": "Install", 43 | "7": "Depots", 44 | "8": "VAC_UNUSED", 45 | "9": "DRM_UNUSED", 46 | "10": "UFS", 47 | "11": "OGG", 48 | "12": "ItemsUNUSED", 49 | "13": "Policies", 50 | "14": "SysReqs", 51 | "15": "Community", 52 | "16": "Store", 53 | "17": "Localization", 54 | "18": "Broadcastgamedata", 55 | "19": "Computed", 56 | "20": "Albummetadata", 57 | }; 58 | 59 | module.exports = EAppInfoSection; 60 | -------------------------------------------------------------------------------- /enums/EChatPermission.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EChatPermission = { 9 | "Close": 1, 10 | "Invite": 2, 11 | "Talk": 8, 12 | "Kick": 16, 13 | "Mute": 32, 14 | "SetMetadata": 64, 15 | "ChangePermissions": 128, 16 | "Ban": 256, 17 | "ChangeAccess": 512, 18 | "Mask": 1019, 19 | 20 | // Value-to-name mapping for convenience 21 | "1": "Close", 22 | "2": "Invite", 23 | "8": "Talk", 24 | "16": "Kick", 25 | "32": "Mute", 26 | "64": "SetMetadata", 27 | "128": "ChangePermissions", 28 | "256": "Ban", 29 | "512": "ChangeAccess", 30 | "1019": "Mask", 31 | }; 32 | 33 | module.exports = EChatPermission; 34 | 35 | module.exports.EveryoneNotInClanDefault = module.exports.Talk; 36 | module.exports.EveryoneDefault = module.exports.Talk | module.exports.Invite; 37 | module.exports.MemberDefault = module.exports.Ban | module.exports.Kick | module.exports.Talk | module.exports.Invite; 38 | module.exports.OfficerDefault = module.exports.Ban | module.exports.Kick | module.exports.Talk | module.exports.Invite; 39 | module.exports.OwnerDefault = module.exports.ChangeAccess | module.exports.Ban | module.exports.SetMetadata | module.exports.Mute | module.exports.Kick | module.exports.Talk | module.exports.Invite | module.exports.Close; 40 | -------------------------------------------------------------------------------- /enums/ELicenseFlags.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Mon Sep 02 2024 23:48:07 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ELicenseFlags = { 9 | "None": 0, 10 | "Renew": 1, 11 | "RenewalFailed": 2, 12 | "Pending": 4, 13 | "Expired": 8, 14 | "CancelledByUser": 16, 15 | "CancelledByAdmin": 32, 16 | "LowViolenceContent": 64, 17 | "ImportedFromSteam2": 128, 18 | "ForceRunRestriction": 256, 19 | "RegionRestrictionExpired": 512, 20 | "CancelledByFriendlyFraudLock": 1024, 21 | "NotActivated": 2048, 22 | "PendingRefund": 8192, 23 | "Borrowed": 16384, 24 | "ReleaseStateOverride": 32768, 25 | "CancelledByPartner": 262144, 26 | "NonPermanent": 524288, 27 | "PreferredOwner": 1048576, 28 | 29 | // Value-to-name mapping for convenience 30 | "0": "None", 31 | "1": "Renew", 32 | "2": "RenewalFailed", 33 | "4": "Pending", 34 | "8": "Expired", 35 | "16": "CancelledByUser", 36 | "32": "CancelledByAdmin", 37 | "64": "LowViolenceContent", 38 | "128": "ImportedFromSteam2", 39 | "256": "ForceRunRestriction", 40 | "512": "RegionRestrictionExpired", 41 | "1024": "CancelledByFriendlyFraudLock", 42 | "2048": "NotActivated", 43 | "8192": "PendingRefund", 44 | "16384": "Borrowed", 45 | "32768": "ReleaseStateOverride", 46 | "262144": "CancelledByPartner", 47 | "524288": "NonPermanent", 48 | "1048576": "PreferredOwner", 49 | }; 50 | 51 | module.exports = ELicenseFlags; 52 | -------------------------------------------------------------------------------- /components/classes/HandlerManager.js: -------------------------------------------------------------------------------- 1 | class HandlerManager { 2 | constructor() { 3 | this._handlers = {}; 4 | } 5 | 6 | hasHandler(msg) { 7 | return this._handlers[msg] && this._handlers[msg].length > 0; 8 | } 9 | 10 | add(msg, handler) { 11 | if (!this._handlers[msg]) { 12 | this._handlers[msg] = []; 13 | } 14 | 15 | if (this._handlers[msg].some(existingHandler => existingHandler.toString() == handler.toString())) { 16 | // This handler already exists 17 | // We can't check if the functions equal each other because anonymous functions won't, necessarily... 18 | // So instead we stringify the functions and if they're identical, then don't add them both. Probably going 19 | // to cause problems down the road, but whatever. 20 | return; 21 | } 22 | 23 | this._handlers[msg].push(handler); 24 | } 25 | 26 | emit(instance, msg, ...args) { 27 | this.checkMsgForLegacyHandlers(msg); 28 | 29 | let handlers = this._handlers[msg]; 30 | if (!handlers || handlers.length == 0) { 31 | return; 32 | } 33 | 34 | handlers.forEach((handler) => { 35 | handler.apply(instance, args); 36 | }); 37 | } 38 | 39 | checkMsgForLegacyHandlers(msg) { 40 | const SteamUser = require('../../index.js'); 41 | if (typeof SteamUser.prototype._handlers[msg] === 'function') { 42 | this.add(msg, SteamUser.prototype._handlers[msg]); 43 | delete SteamUser.prototype._handlers[msg]; 44 | } 45 | } 46 | } 47 | 48 | module.exports = HandlerManager; 49 | -------------------------------------------------------------------------------- /components/05-filestorage.js: -------------------------------------------------------------------------------- 1 | const SteamUserUtility = require('./04-utility.js'); 2 | 3 | class SteamUserFileStorage extends SteamUserUtility { 4 | /** 5 | * @param {string} filename 6 | * @param {Buffer|*} content 7 | * @return {Promise} 8 | * @protected 9 | */ 10 | async _saveFile(filename, content) { 11 | try { 12 | if (this.storage) { 13 | await this.storage.saveFile(filename, content); 14 | } 15 | } catch (ex) { 16 | this.emit('debug', `Error saving file ${filename}: ${ex.message}`); 17 | } 18 | } 19 | 20 | /** 21 | * @param {string} filename 22 | * @returns {Promise} 23 | * @protected 24 | */ 25 | async _readFile(filename) { 26 | let content = null; 27 | 28 | try { 29 | if (this.storage) { 30 | content = await this.storage.readFile(filename); 31 | } 32 | } catch (ex) { 33 | this.emit('debug', `Error reading file ${filename}: ${ex.message}`); 34 | } 35 | 36 | return content; 37 | } 38 | 39 | /** 40 | * @param {string[]} filenames 41 | * @returns {Promise<{filename: string, error?: Error, contents?: Buffer}[]>} 42 | * @protected 43 | */ 44 | async _readFiles(filenames) { 45 | if (!this.storage) { 46 | return filenames.map(filename => ({filename, error: new Error('Storage system disabled')})); 47 | } 48 | 49 | // No need for a try/catch because readFiles can't reject 50 | return await this.storage.readFiles(filenames); 51 | } 52 | } 53 | 54 | module.exports = SteamUserFileStorage; 55 | -------------------------------------------------------------------------------- /examples/tokendumper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SteamUser example - TokenDumper 3 | * 4 | * Dumps all access tokens available to anonymous user accounts. 5 | */ 6 | 7 | const SteamUser = require('../index.js'); // Replace this with `require('steam-user');` if used outside of the module directory 8 | 9 | let client = new SteamUser(); 10 | client.logOn(); // Log onto Steam anonymously 11 | 12 | client.on('loggedOn', (details) => { 13 | console.log('Logged onto Steam as ' + client.steamID.getSteam3RenderedID()); 14 | 15 | let idList = []; 16 | for (let i = 0; i < 1000000; i++) { 17 | idList.push(i); 18 | } 19 | 20 | // doing this for packages just hangs forever 21 | client.getProductAccessToken(idList, [], (appTokens, packageTokens, appDeniedTokens, packageDeniedTokens) => { 22 | console.log('Tokens denied for ' + appDeniedTokens.length + ' apps and ' + packageDeniedTokens.length + ' packages'); 23 | 24 | for (let appid in appTokens) { 25 | if (Object.hasOwnProperty.call(appTokens, appid) && appTokens[appid].toString() != '0') { 26 | console.log('App ' + appid + ': ' + appTokens[appid].toString()); 27 | } 28 | } 29 | 30 | for (let packageid in packageTokens) { 31 | if (Object.hasOwnProperty.call(packageTokens, packageid) && packageTokens[packageid].toString() != '0') { 32 | console.log('Package ' + packageid + ': ' + packageTokens[packageid].toString()); 33 | } 34 | } 35 | 36 | console.log('Logging off of Steam'); 37 | client.logOff(); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /enums/EFrameAccumulatedStat.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EFrameAccumulatedStat = { 9 | "FPS": 0, 10 | "CaptureDurationMS": 1, 11 | "ConvertDurationMS": 2, 12 | "EncodeDurationMS": 3, 13 | "SteamDurationMS": 4, 14 | "ServerDurationMS": 5, 15 | "NetworkDurationMS": 6, 16 | "DecodeDurationMS": 7, 17 | "DisplayDurationMS": 8, 18 | "ClientDurationMS": 9, 19 | "FrameDurationMS": 10, 20 | "InputLatencyMS": 11, 21 | "GameLatencyMS": 12, 22 | "RoundTripLatencyMS": 13, 23 | "PingTimeMS": 14, 24 | "ServerBitrateKbitPerSec": 15, 25 | "ClientBitrateKbitPerSec": 16, 26 | "LinkBandwidthKbitPerSec": 17, 27 | "PacketLossPercentage": 18, 28 | 29 | // Value-to-name mapping for convenience 30 | "0": "FPS", 31 | "1": "CaptureDurationMS", 32 | "2": "ConvertDurationMS", 33 | "3": "EncodeDurationMS", 34 | "4": "SteamDurationMS", 35 | "5": "ServerDurationMS", 36 | "6": "NetworkDurationMS", 37 | "7": "DecodeDurationMS", 38 | "8": "DisplayDurationMS", 39 | "9": "ClientDurationMS", 40 | "10": "FrameDurationMS", 41 | "11": "InputLatencyMS", 42 | "12": "GameLatencyMS", 43 | "13": "RoundTripLatencyMS", 44 | "14": "PingTimeMS", 45 | "15": "ServerBitrateKbitPerSec", 46 | "16": "ClientBitrateKbitPerSec", 47 | "17": "LinkBandwidthKbitPerSec", 48 | "18": "PacketLossPercentage", 49 | }; 50 | 51 | module.exports = EFrameAccumulatedStat; 52 | -------------------------------------------------------------------------------- /protobufs/steammessages_offline.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | import "offline_ticket.proto"; 4 | 5 | option cc_generic_services = true; 6 | 7 | message COffline_GetOfflineLogonTicket_Request { 8 | optional uint32 priority = 1; 9 | optional bool perform_encryption = 2; 10 | } 11 | 12 | message COffline_GetOfflineLogonTicket_Response { 13 | optional bytes serialized_ticket = 1; 14 | optional bytes signature = 2; 15 | optional .Offline_Ticket encrypted_ticket = 3; 16 | } 17 | 18 | message COffline_GetUnsignedOfflineLogonTicket_Request { 19 | } 20 | 21 | message COffline_OfflineLogonTicket { 22 | optional uint32 accountid = 1; 23 | optional fixed32 rtime32_creation_time = 2; 24 | } 25 | 26 | message COffline_GetUnsignedOfflineLogonTicket_Response { 27 | optional .COffline_OfflineLogonTicket ticket = 1; 28 | } 29 | 30 | service Offline { 31 | option (service_description) = "Offline settings service"; 32 | 33 | rpc GetOfflineLogonTicket (.COffline_GetOfflineLogonTicket_Request) returns (.COffline_GetOfflineLogonTicket_Response) { 34 | option (method_description) = "Get a serialized and signed offline logon ticket for the current user"; 35 | } 36 | 37 | rpc GetUnsignedOfflineLogonTicket (.COffline_GetUnsignedOfflineLogonTicket_Request) returns (.COffline_GetUnsignedOfflineLogonTicket_Response) { 38 | option (method_description) = "Get an unsigned offline logon ticket for the current user"; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /protobufs/steammessages_vac.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | message CFileVerification_SignatureCheck_Request { 7 | optional fixed64 steamid = 1; 8 | optional uint32 appid = 2; 9 | optional uint64 file_size = 3; 10 | optional uint32 file_timestamp = 4; 11 | optional uint32 file_timestamp2 = 5; 12 | optional uint32 signature_result = 6; 13 | optional string filename = 7; 14 | optional uint32 client_package_version = 8; 15 | optional bytes sha1hash = 9; 16 | } 17 | 18 | message CFileVerification_SignatureCheck_Response { 19 | optional bool deny_operation = 1; 20 | } 21 | 22 | message CFileVerification_SteamServiceCheck_Request { 23 | optional uint32 service_status = 2; 24 | optional uint32 client_package_version = 3; 25 | optional uint32 launcher_type = 4; 26 | optional uint32 os_type = 5; 27 | optional uint32 service_repair = 6; 28 | } 29 | 30 | message CFileVerification_SteamServiceCheck_Response { 31 | optional bool attempt_repair = 1; 32 | } 33 | 34 | service FileVerification { 35 | option (service_description) = "File verification services"; 36 | 37 | rpc SignatureCheck (.CFileVerification_SignatureCheck_Request) returns (.CFileVerification_SignatureCheck_Response) { 38 | option (method_description) = "File signature check was performed"; 39 | } 40 | 41 | rpc SteamServiceCheck (.CFileVerification_SteamServiceCheck_Request) returns (.CFileVerification_SteamServiceCheck_Response) { 42 | option (method_description) = "Steam Service check was performed"; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /protobufs/clientmetrics.proto: -------------------------------------------------------------------------------- 1 | option optimize_for = SPEED; 2 | option cc_generic_services = false; 3 | 4 | message CClientMetrics_ClientBootstrap_RequestInfo { 5 | optional string original_hostname = 1; 6 | optional string actual_hostname = 2; 7 | optional string path = 3; 8 | optional string base_name = 4; 9 | optional bool success = 5; 10 | optional uint32 status_code = 6; 11 | optional string address_of_request_url = 7; 12 | optional uint32 response_time_ms = 8; 13 | optional uint64 bytes_received = 9; 14 | optional uint32 num_retries = 10; 15 | } 16 | 17 | message CClientMetrics_ClientBootstrap_Summary { 18 | optional uint32 launcher_type = 1; 19 | optional uint32 steam_realm = 2; 20 | optional string beta_name = 3; 21 | optional bool download_completed = 4; 22 | optional uint32 total_time_ms = 6; 23 | repeated .CClientMetrics_ClientBootstrap_RequestInfo manifest_requests = 7; 24 | repeated .CClientMetrics_ClientBootstrap_RequestInfo package_requests = 8; 25 | } 26 | 27 | message CClientMetrics_ContentDownloadResponse_Counts { 28 | optional uint32 class_100 = 1; 29 | optional uint32 class_200 = 2; 30 | optional uint32 class_300 = 3; 31 | optional uint32 class_400 = 4; 32 | optional uint32 class_500 = 5; 33 | optional uint32 no_response = 6; 34 | optional uint32 class_unknown = 7; 35 | } 36 | 37 | message CClientMetrics_ContentDownloadResponse_HostCounts { 38 | optional string hostname = 1; 39 | optional uint32 source_type = 2; 40 | optional .CClientMetrics_ContentDownloadResponse_Counts counts = 3; 41 | } 42 | 43 | message CClientMetrics_ContentDownloadResponse_Hosts { 44 | repeated .CClientMetrics_ContentDownloadResponse_HostCounts hosts = 1; 45 | } 46 | -------------------------------------------------------------------------------- /protobufs/steammessages_market.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | message CEconMarket_IsMarketplaceAllowed_Request { 7 | optional string webcookie = 1 [(description) = "The user's Steam Guard machine auth cookie."]; 8 | } 9 | 10 | message CEconMarket_IsMarketplaceAllowed_Response { 11 | optional bool allowed = 1 [(description) = "Whether or not the user is allowed to use the market"]; 12 | optional uint32 reason = 2 [(description) = "The reason the user can't use the market, if applicable"]; 13 | optional uint32 allowed_at_time = 3 [(description) = "The time the user will be allowed to use the market"]; 14 | optional uint32 steamguard_required_days = 4 [(description) = "The number of days any user is required to have had Steam Guard before they can use the market"]; 15 | optional bool forms_requested = 7 [(description) = "Whether or not we've requested the user fill out tax forms"]; 16 | optional bool forms_require_verification = 8 [(description) = "True if we've received forms but they require verification first"]; 17 | optional uint32 new_device_cooldown_days = 9 [(description) = "The number of days after initial device authorization a user must wait before using the market on that device"]; 18 | } 19 | 20 | service EconMarket { 21 | option (service_description) = "A service to use market functions"; 22 | 23 | rpc IsMarketplaceAllowed (.CEconMarket_IsMarketplaceAllowed_Request) returns (.CEconMarket_IsMarketplaceAllowed_Response) { 24 | option (method_description) = "Checks whether or not the authed account is allowed to use the market"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /enums/EProfileCustomizationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Fri Jun 30 2023 01:09:35 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EProfileCustomizationType = { 9 | "Invalid": 0, 10 | "RareAchievementShowcase": 1, 11 | "GameCollector": 2, 12 | "ItemShowcase": 3, 13 | "TradeShowcase": 4, 14 | "Badges": 5, 15 | "FavoriteGame": 6, 16 | "ScreenshotShowcase": 7, 17 | "CustomText": 8, 18 | "FavoriteGroup": 9, 19 | "Recommendation": 10, 20 | "WorkshopItem": 11, 21 | "MyWorkshop": 12, 22 | "ArtworkShowcase": 13, 23 | "VideoShowcase": 14, 24 | "Guides": 15, 25 | "MyGuides": 16, 26 | "Achievements": 17, 27 | "Greenlight": 18, 28 | "MyGreenlight": 19, 29 | "Salien": 20, 30 | "LoyaltyRewardReactions": 21, 31 | "SingleArtworkShowcase": 22, 32 | "AchievementsCompletionist": 23, 33 | "Replay": 24, 34 | 35 | // Value-to-name mapping for convenience 36 | "0": "Invalid", 37 | "1": "RareAchievementShowcase", 38 | "2": "GameCollector", 39 | "3": "ItemShowcase", 40 | "4": "TradeShowcase", 41 | "5": "Badges", 42 | "6": "FavoriteGame", 43 | "7": "ScreenshotShowcase", 44 | "8": "CustomText", 45 | "9": "FavoriteGroup", 46 | "10": "Recommendation", 47 | "11": "WorkshopItem", 48 | "12": "MyWorkshop", 49 | "13": "ArtworkShowcase", 50 | "14": "VideoShowcase", 51 | "15": "Guides", 52 | "16": "MyGuides", 53 | "17": "Achievements", 54 | "18": "Greenlight", 55 | "19": "MyGreenlight", 56 | "20": "Salien", 57 | "21": "LoyaltyRewardReactions", 58 | "22": "SingleArtworkShowcase", 59 | "23": "AchievementsCompletionist", 60 | "24": "Replay", 61 | }; 62 | 63 | module.exports = EProfileCustomizationType; 64 | -------------------------------------------------------------------------------- /enums/EDRMBlobDownloadErrorDetail.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Thu Feb 24 2022 03:38:38 GMT-0500 (Eastern Standard Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const EDRMBlobDownloadErrorDetail = { 9 | "None": 0, 10 | "DownloadFailed": 1, 11 | "TargetLocked": 2, 12 | "OpenZip": 3, 13 | "ReadZipDirectory": 4, 14 | "UnexpectedZipEntry": 5, 15 | "UnzipFullFile": 6, 16 | "UnknownBlobType": 7, 17 | "UnzipStrips": 8, 18 | "UnzipMergeGuid": 9, 19 | "UnzipSignature": 10, 20 | "ApplyStrips": 11, 21 | "ApplyMergeGuid": 12, 22 | "ApplySignature": 13, 23 | "AppIdMismatch": 14, 24 | "AppIdUnexpected": 15, 25 | "AppliedSignatureCorrupt": 16, 26 | "ApplyValveSignatureHeader": 17, 27 | "UnzipValveSignatureHeader": 18, 28 | "PathManipulationError": 19, 29 | "TargetLocked_Base": 65536, 30 | "TargetLocked_Max": 131071, 31 | "NextBase": 131072, 32 | 33 | // Value-to-name mapping for convenience 34 | "0": "None", 35 | "1": "DownloadFailed", 36 | "2": "TargetLocked", 37 | "3": "OpenZip", 38 | "4": "ReadZipDirectory", 39 | "5": "UnexpectedZipEntry", 40 | "6": "UnzipFullFile", 41 | "7": "UnknownBlobType", 42 | "8": "UnzipStrips", 43 | "9": "UnzipMergeGuid", 44 | "10": "UnzipSignature", 45 | "11": "ApplyStrips", 46 | "12": "ApplyMergeGuid", 47 | "13": "ApplySignature", 48 | "14": "AppIdMismatch", 49 | "15": "AppIdUnexpected", 50 | "16": "AppliedSignatureCorrupt", 51 | "17": "ApplyValveSignatureHeader", 52 | "18": "UnzipValveSignatureHeader", 53 | "19": "PathManipulationError", 54 | "65536": "TargetLocked_Base", 55 | "131071": "TargetLocked_Max", 56 | "131072": "NextBase", 57 | }; 58 | 59 | module.exports = EDRMBlobDownloadErrorDetail; 60 | -------------------------------------------------------------------------------- /resources/default_options.js: -------------------------------------------------------------------------------- 1 | const EConnectionProtocol = require('./EConnectionProtocol.js'); 2 | const EMachineIDType = require('./EMachineIDType.js'); 3 | 4 | /** 5 | * @typedef {object} OptionsObject 6 | * @property {string|null} [dataDirectory] 7 | * @property {boolean} [autoRelogin=true] 8 | * @property {EMachineIDType} [machineIdType] 9 | * @property {string[]} [machineIdFormat] 10 | * @property {boolean} [enablePicsCache=false] 11 | * @property {boolean} [picsCacheAll=false] 12 | * @property {number} [changelistUpdateInterval=60000] 13 | * @property {PackageFilter|PackageFilterFunction|null} [ownershipFilter=null] 14 | * @property {object} [additionalHeaders={}] 15 | * @property {string|null} [localAddress=null] 16 | * @property {number|null} [localPort=null] 17 | * @property {string|null} [httpProxy=null] 18 | * @property {string|null} [socksProxy=null] 19 | * @property {EConnectionProtocol} [protocol] 20 | * @property {string} [language='english'] 21 | * @property {boolean} [webCompatibilityMode=false] 22 | * @property {boolean} [saveAppTickets=true] 23 | * @property {boolean} [renewRefreshTokens=false] 24 | */ 25 | 26 | module.exports = { 27 | autoRelogin: true, 28 | machineIdType: EMachineIDType.AccountNameGenerated, 29 | machineIdFormat: ['SteamUser Hash BB3 {account_name}', 'SteamUser Hash FF2 {account_name}', 'SteamUser Hash 3B3 {account_name}'], 30 | enablePicsCache: false, 31 | picsCacheAll: false, 32 | changelistUpdateInterval: 60000, 33 | additionalHeaders: {}, 34 | localAddress: null, 35 | localPort: null, 36 | httpProxy: null, 37 | socksProxy: null, 38 | protocol: EConnectionProtocol.Auto, 39 | language: 'english', 40 | webCompatibilityMode: false, 41 | saveAppTickets: true, 42 | renewRefreshTokens: false 43 | }; 44 | -------------------------------------------------------------------------------- /enums/ESteamNotificationType.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // Auto-generated by generate-enums script on Tue Sep 03 2024 00:00:33 GMT-0400 (Eastern Daylight Time) 3 | 4 | /** 5 | * @enum 6 | * @readonly 7 | */ 8 | const ESteamNotificationType = { 9 | Invalid: 0, 10 | Test: 1, 11 | Gift: 2, 12 | Comment: 3, 13 | Item: 4, 14 | FriendInvite: 5, 15 | MajorSale: 6, 16 | PreloadAvailable: 7, 17 | Wishlist: 8, 18 | TradeOffer: 9, 19 | General: 10, 20 | HelpRequest: 11, 21 | AsyncGame: 12, 22 | ChatMsg: 13, 23 | ModeratorMsg: 14, 24 | ParentalFeatureAccessRequest: 15, 25 | FamilyInvite: 16, 26 | FamilyPurchaseRequest: 17, 27 | ParentalPlaytimeRequest: 18, 28 | FamilyPurchaseRequestResponse: 19, 29 | ParentalFeatureAccessResponse: 20, 30 | ParentalPlaytimeResponse: 21, 31 | RequestedGameAdded: 22, 32 | SendToPhone: 23, 33 | ClipDownloaded: 24, 34 | TwoFactorPrompt: 25, 35 | MobileConfirmation: 26, 36 | PartnerEvent: 27, 37 | 38 | // Value-to-name mapping for convenience 39 | 0: 'Invalid', 40 | 1: 'Test', 41 | 2: 'Gift', 42 | 3: 'Comment', 43 | 4: 'Item', 44 | 5: 'FriendInvite', 45 | 6: 'MajorSale', 46 | 7: 'PreloadAvailable', 47 | 8: 'Wishlist', 48 | 9: 'TradeOffer', 49 | 10: 'General', 50 | 11: 'HelpRequest', 51 | 12: 'AsyncGame', 52 | 13: 'ChatMsg', 53 | 14: 'ModeratorMsg', 54 | 15: 'ParentalFeatureAccessRequest', 55 | 16: 'FamilyInvite', 56 | 17: 'FamilyPurchaseRequest', 57 | 18: 'ParentalPlaytimeRequest', 58 | 19: 'FamilyPurchaseRequestResponse', 59 | 20: 'ParentalFeatureAccessResponse', 60 | 21: 'ParentalPlaytimeResponse', 61 | 22: 'RequestedGameAdded', 62 | 23: 'SendToPhone', 63 | 24: 'ClipDownloaded', 64 | 25: 'TwoFactorPrompt', 65 | 26: 'MobileConfirmation', 66 | 27: 'PartnerEvent', 67 | }; 68 | 69 | module.exports = ESteamNotificationType; 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "steam-user", 3 | "version": "5.3.0", 4 | "description": "Steam client for Individual and AnonUser Steam account types", 5 | "keywords": [ 6 | "steam", 7 | "steam client", 8 | "steam user" 9 | ], 10 | "homepage": "https://github.com/DoctorMcKay/node-steam-user", 11 | "bugs": { 12 | "url": "https://github.com/DoctorMcKay/node-steam-user/issues" 13 | }, 14 | "license": "MIT", 15 | "author": { 16 | "name": "Alex Corn", 17 | "email": "mckay@doctormckay.com", 18 | "url": "https://www.doctormckay.com" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/DoctorMcKay/node-steam-user.git" 23 | }, 24 | "dependencies": { 25 | "@bbob/parser": "^2.2.0", 26 | "@doctormckay/stdlib": "^2.9.1", 27 | "@doctormckay/steam-crypto": "^1.2.0", 28 | "adm-zip": "^0.5.10", 29 | "binarykvparser": "^2.2.0", 30 | "bytebuffer": "^5.0.0", 31 | "file-manager": "^2.0.0", 32 | "kvparser": "^1.0.1", 33 | "lzma": "^2.3.2", 34 | "protobufjs": "^7.2.4", 35 | "socks-proxy-agent": "^7.0.0", 36 | "steam-appticket": "^1.0.1", 37 | "steam-session": "^1.8.0", 38 | "steam-totp": "^2.0.1", 39 | "steamid": "^2.0.0", 40 | "websocket13": "^4.0.0", 41 | "zstddec": "^0.1.0" 42 | }, 43 | "peerDependencies": { 44 | "lzma-native": "^8.0.0" 45 | }, 46 | "peerDependenciesMeta": { 47 | "lzma-native": {"optional": true} 48 | }, 49 | "devDependencies": { 50 | "eslint": "^8.57.0", 51 | "protobufjs-cli": "^1.1.3", 52 | "steamcommunity": "^3.39.0", 53 | "wtfnode": "^0.8.4" 54 | }, 55 | "scripts": { 56 | "generate-enums": "node scripts/generate-enums.js", 57 | "generate-protos": "node scripts/generate-protos.js", 58 | "lint": "npx eslint . --ext .js,.jsx,.ts,.tsx" 59 | }, 60 | "engines": { 61 | "node": ">=14.0.0" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /protobufs/steammessages_timedtrial.steamclient.proto: -------------------------------------------------------------------------------- 1 | import "steammessages_base.proto"; 2 | import "steammessages_unified_base.steamclient.proto"; 3 | 4 | option cc_generic_services = true; 5 | 6 | message CTimedTrial_GetTimeRemaining_Request { 7 | optional uint32 appid = 1; 8 | } 9 | 10 | message CTimedTrial_GetTimeRemaining_Response { 11 | optional uint32 seconds_played = 1; 12 | optional uint32 seconds_allowed = 2; 13 | optional uint32 packageid = 3; 14 | optional uint32 mastersub_appid = 4; 15 | } 16 | 17 | message CTimedTrial_RecordPlaytime_Request { 18 | optional uint32 appid = 1; 19 | optional uint32 seconds_played = 2; 20 | } 21 | 22 | message CTimedTrial_RecordPlaytime_Response { 23 | optional uint32 seconds_played = 1; 24 | optional uint32 seconds_allowed = 2; 25 | } 26 | 27 | message CTimedTrial_ResetPlaytime_Request { 28 | optional uint32 appid = 1; 29 | } 30 | 31 | message CTimedTrial_ResetPlaytime_Response { 32 | optional uint32 seconds_played = 1; 33 | optional uint32 seconds_allowed = 2; 34 | } 35 | 36 | service TimedTrial { 37 | option (service_description) = "A service to get user timed trial information"; 38 | 39 | rpc GetTimeRemaining (.CTimedTrial_GetTimeRemaining_Request) returns (.CTimedTrial_GetTimeRemaining_Response) { 40 | option (method_description) = "Returns the amount of time a user has left on a timed trial for an app"; 41 | } 42 | 43 | rpc RecordPlaytime (.CTimedTrial_RecordPlaytime_Request) returns (.CTimedTrial_RecordPlaytime_Response) { 44 | option (method_description) = "Updates the user's remaining playtime while in game"; 45 | } 46 | 47 | rpc ResetPlaytime (.CTimedTrial_ResetPlaytime_Request) returns (.CTimedTrial_ResetPlaytime_Response) { 48 | option (method_description) = "Reset the user's remaining playtime (developer only)"; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /protobufs/steammessages_gamenetworkingui.proto: -------------------------------------------------------------------------------- 1 | import "steamnetworkingsockets_messages.proto"; 2 | import "steamdatagram_messages_sdr.proto"; 3 | 4 | option optimize_for = SPEED; 5 | option cc_generic_services = true; 6 | 7 | message CGameNetworkingUI_GlobalState { 8 | } 9 | 10 | message CGameNetworkingUI_ConnectionState { 11 | optional string connection_key = 1; 12 | optional uint32 appid = 2; 13 | optional fixed32 connection_id_local = 3; 14 | optional string identity_local = 4; 15 | optional string identity_remote = 5; 16 | optional uint32 connection_state = 10; 17 | optional uint32 start_time = 12; 18 | optional uint32 close_time = 13; 19 | optional uint32 close_reason = 14; 20 | optional string close_message = 15; 21 | optional string status_loc_token = 16; 22 | optional uint32 transport_kind = 20; 23 | optional string sdrpopid_local = 21; 24 | optional string sdrpopid_remote = 22; 25 | optional string address_remote = 23; 26 | optional .CMsgSteamDatagramP2PRoutingSummary p2p_routing = 24; 27 | optional uint32 ping_interior = 25; 28 | optional uint32 ping_remote_front = 26; 29 | optional uint32 ping_default_internet_route = 27; 30 | optional .CMsgSteamDatagramConnectionQuality e2e_quality_local = 30; 31 | optional .CMsgSteamDatagramConnectionQuality e2e_quality_remote = 31; 32 | optional uint64 e2e_quality_remote_instantaneous_time = 32; 33 | optional uint64 e2e_quality_remote_lifetime_time = 33; 34 | optional .CMsgSteamDatagramConnectionQuality front_quality_local = 40; 35 | optional .CMsgSteamDatagramConnectionQuality front_quality_remote = 41; 36 | optional uint64 front_quality_remote_instantaneous_time = 42; 37 | optional uint64 front_quality_remote_lifetime_time = 43; 38 | } 39 | 40 | message CGameNetworkingUI_Message { 41 | repeated .CGameNetworkingUI_ConnectionState connection_state = 1; 42 | } 43 | -------------------------------------------------------------------------------- /protobufs/content_manifest.proto: -------------------------------------------------------------------------------- 1 | option optimize_for = SPEED; 2 | option cc_generic_services = false; 3 | 4 | enum EContentDeltaChunkDataLocation { 5 | k_EContentDeltaChunkDataLocationInProtobuf = 0; 6 | k_EContentDeltaChunkDataLocationAfterProtobuf = 1; 7 | } 8 | 9 | message ContentManifestPayload { 10 | message FileMapping { 11 | message ChunkData { 12 | optional bytes sha = 1; 13 | optional fixed32 crc = 2; 14 | optional uint64 offset = 3; 15 | optional uint32 cb_original = 4; 16 | optional uint32 cb_compressed = 5; 17 | } 18 | 19 | optional string filename = 1; 20 | optional uint64 size = 2; 21 | optional uint32 flags = 3; 22 | optional bytes sha_filename = 4; 23 | optional bytes sha_content = 5; 24 | repeated .ContentManifestPayload.FileMapping.ChunkData chunks = 6; 25 | optional string linktarget = 7; 26 | } 27 | 28 | repeated .ContentManifestPayload.FileMapping mappings = 1; 29 | } 30 | 31 | message ContentManifestMetadata { 32 | optional uint32 depot_id = 1; 33 | optional uint64 gid_manifest = 2; 34 | optional uint32 creation_time = 3; 35 | optional bool filenames_encrypted = 4; 36 | optional uint64 cb_disk_original = 5; 37 | optional uint64 cb_disk_compressed = 6; 38 | optional uint32 unique_chunks = 7; 39 | optional uint32 crc_encrypted = 8; 40 | optional uint32 crc_clear = 9; 41 | } 42 | 43 | message ContentManifestSignature { 44 | optional bytes signature = 1; 45 | } 46 | 47 | message ContentDeltaChunks { 48 | message DeltaChunk { 49 | optional bytes sha_source = 1; 50 | optional bytes sha_target = 2; 51 | optional uint32 size_original = 3; 52 | optional uint32 patch_method = 4; 53 | optional bytes chunk = 5; 54 | optional uint32 size_delta = 6; 55 | } 56 | 57 | optional uint32 depot_id = 1; 58 | optional uint64 manifest_id_source = 2; 59 | optional uint64 manifest_id_target = 3; 60 | repeated .ContentDeltaChunks.DeltaChunk deltaChunks = 4; 61 | optional .EContentDeltaChunkDataLocation chunk_data_location = 5 [default = k_EContentDeltaChunkDataLocationInProtobuf]; 62 | } 63 | -------------------------------------------------------------------------------- /resources/CurrencyData.js: -------------------------------------------------------------------------------- 1 | const ECurrencyCode = require('../enums/ECurrencyCode.js'); 2 | 3 | let CurrencyData = {}; 4 | CurrencyData[ECurrencyCode.USD] = {prepend: '$'}; 5 | CurrencyData[ECurrencyCode.GBP] = {prepend: '\u00a3'}; 6 | CurrencyData[ECurrencyCode.EUR] = {append: '\u20ac', commas: true}; 7 | CurrencyData[ECurrencyCode.CHF] = {append: ' CHF'}; 8 | CurrencyData[ECurrencyCode.RUB] = {append: ' p\u0443\u0431.', commas: true, whole: true}; 9 | CurrencyData[ECurrencyCode.PLN] = {append: ' PLN'}; 10 | CurrencyData[ECurrencyCode.BRL] = {append: ' R$', commas: true}; 11 | CurrencyData[ECurrencyCode.JPY] = {prepend: '\u00a5 ', whole: true}; 12 | CurrencyData[ECurrencyCode.NOK] = {append: ' kr', commas: true}; 13 | CurrencyData[ECurrencyCode.IDR] = {prepend: 'Rp '}; 14 | CurrencyData[ECurrencyCode.MYR] = {prepend: 'RM '}; 15 | CurrencyData[ECurrencyCode.PHP] = {prepend: 'P '}; 16 | CurrencyData[ECurrencyCode.SGD] = {prepend: 'S$ '}; 17 | CurrencyData[ECurrencyCode.THB] = {prepend: '\u0e3f '}; 18 | CurrencyData[ECurrencyCode.VND] = {append: ' VND'}; 19 | CurrencyData[ECurrencyCode.KRW] = {prepend: '\u20a9', whole: true}; 20 | CurrencyData[ECurrencyCode.TRY] = {append: ' TRY'}; 21 | CurrencyData[ECurrencyCode.UAH] = {append: ' UAH'}; 22 | CurrencyData[ECurrencyCode.MXN] = {prepend: 'Mex$ '}; 23 | CurrencyData[ECurrencyCode.CAD] = {prepend: 'CDN$ '}; 24 | CurrencyData[ECurrencyCode.AUD] = {prepend: 'A$ '}; 25 | CurrencyData[ECurrencyCode.NZD] = {prepend: 'NZ$ '}; 26 | CurrencyData[ECurrencyCode.CNY] = {append: ' CNY'}; 27 | CurrencyData[ECurrencyCode.INR] = {append: ' INR'}; 28 | CurrencyData[ECurrencyCode.CLP] = {append: ' CLP'}; 29 | CurrencyData[ECurrencyCode.PEN] = {append: ' PEN'}; 30 | CurrencyData[ECurrencyCode.COP] = {append: ' COP'}; 31 | CurrencyData[ECurrencyCode.ZAR] = {append: ' ZAR'}; 32 | CurrencyData[ECurrencyCode.HKD] = {append: ' HKD'}; 33 | CurrencyData[ECurrencyCode.TWD] = {append: ' TWD'}; 34 | CurrencyData[ECurrencyCode.SAR] = {append: ' SAR'}; 35 | CurrencyData[ECurrencyCode.AED] = {append: ' AED'}; 36 | 37 | module.exports = CurrencyData; 38 | --------------------------------------------------------------------------------