{"version":3,"sources":["jsdelivr-header.js","/npm/@dust2market/steam-user@1.0.0/index.js"],"names":[],"mappings":"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","file":"/npm/@dust2market/steam-user@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@dust2market/steam-user@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const AppDirectory = require('appdirectory');\r\nconst {EventEmitter} = require('events');\r\nconst FileManager = require('file-manager');\r\n\r\nconst HandlerManager = require('./components/classes/HandlerManager.js');\r\nconst SteamChatRoomClient = require('./components/chatroom.js');\r\n\r\nconst DefaultOptions = require('./resources/default_options.js');\r\n\r\nclass SteamUser extends EventEmitter {\r\n\tconstructor(options) {\r\n\t\tsuper();\r\n\r\n\t\tthis.steamID = null;\r\n\r\n\t\tthis.chat = new SteamChatRoomClient(this);\r\n\r\n\t\t// Account info\r\n\t\tthis.limitations = null;\r\n\t\tthis.vac = null;\r\n\t\tthis.wallet = null;\r\n\t\tthis.emailInfo = null;\r\n\t\tthis.licenses = null;\r\n\t\tthis.gifts = null;\r\n\r\n\t\t// Friends and users info\r\n\t\tthis.users = {};\r\n\t\tthis.groups = {};\r\n\t\tthis.chats = {};\r\n\t\tthis.myFriends = {};\r\n\t\tthis.myGroups = {};\r\n\t\tthis.myFriendGroups = {};\r\n\t\tthis.myNicknames = {};\r\n\t\tthis.steamServers = {};\r\n\t\tthis.contentServersReady = false;\r\n\t\tthis.playingState = {blocked: false, appid: 0};\r\n\t\tthis._playingBlocked = false;\r\n\t\tthis._playingAppIds = [];\r\n\r\n\t\tthis._gcTokens = []; // game connect tokens\r\n\t\tthis._connectTime = 0;\r\n\t\tthis._connectionCount = 0;\r\n\t\tthis._connectTimeout = 1000;\r\n\t\tthis._authSeqMe = 0;\r\n\t\tthis._authSeqThem = 0;\r\n\t\tthis._hSteamPipe = Math.floor(Math.random() * 1000000) + 1;\r\n\t\tthis._contentServers = [];\r\n\t\tthis._contentServersTimestamp = 0;\r\n\t\tthis._contentServerTokens = {};\r\n\t\tthis._lastNotificationCounts = {};\r\n\t\tthis._sessionID = 0;\r\n\t\tthis._jobs = {};\r\n\t\tthis._richPresenceLocalization = {};\r\n\t\tthis._initialized = false;\r\n\r\n\t\t// App and package cache\r\n\t\tthis._changelistUpdateTimer = null;\r\n\t\tthis.picsCache = {\r\n\t\t\tchangenumber: 0,\r\n\t\t\tapps: {},\r\n\t\t\tpackages: {}\r\n\t\t};\r\n\r\n\t\tthis._sentry = null;\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tfor (let i in (options || {})) {\r\n\t\t\tthis._setOption(i, options[i]);\r\n\t\t}\r\n\r\n\t\tfor (let i in DefaultOptions) {\r\n\t\t\tif (typeof this.options[i] === 'undefined') {\r\n\t\t\t\tthis._setOption(i, DefaultOptions[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._checkOptionTypes();\r\n\r\n\t\t/*if (!this.options.dataDirectory && this.options.dataDirectory !== null) {\r\n\t\t\tif (process.env.OPENSHIFT_DATA_DIR) {\r\n\t\t\t\tthis.options.dataDirectory = process.env.OPENSHIFT_DATA_DIR + '/node-steamuser';\r\n\t\t\t} else {\r\n\t\t\t\tthis.options.dataDirectory = (new AppDirectory({\r\n\t\t\t\t\tappName: 'node-steamuser',\r\n\t\t\t\t\tappAuthor: 'doctormckay'\r\n\t\t\t\t})).userData();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.dataDirectory) {\r\n\t\t\tthis.storage = new FileManager(this.options.dataDirectory);\r\n\t\t}*/\r\n\r\n\t\tthis._initialized = true;\r\n\t}\r\n\r\n\tget packageName() {\r\n\t\treturn require('./package.json').name;\r\n\t}\r\n\r\n\tget packageVersion() {\r\n\t\treturn require('./package.json').version;\r\n\t}\r\n\r\n\t/**\r\n\t * Set a configuration option.\r\n\t * @param {string} option\r\n\t * @param {*} value\r\n\t */\r\n\tsetOption(option, value) {\r\n\t\tthis._setOption(option, value);\r\n\t\tthis._checkOptionTypes();\r\n\t}\r\n\r\n\t/**\r\n\t * Set one or more configuration options\r\n\t * @param {object} options\r\n\t */\r\n\tsetOptions(options) {\r\n\t\tfor (let i in options) {\r\n\t\t\tthis._setOption(i, options[i]);\r\n\t\t}\r\n\r\n\t\tthis._checkOptionTypes();\r\n\t}\r\n\r\n\t/**\r\n\t * Actually commit an option change. This is a separate method since user-facing methods need to be able to call\r\n\t * _checkOptionTypes() but we also want to be able to change options internally without calling it.\r\n\t * @param {string} option\r\n\t * @param {*} value\r\n\t * @private\r\n\t */\r\n\t_setOption(option, value) {\r\n\t\tthis.options[option] = value;\r\n\r\n\t\t// Handle anything that needs to happen when particular options update\r\n\t\tswitch (option) {\r\n\t\t\t/*case 'dataDirectory':\r\n\t\t\t\tif (this._initialized) {\r\n\t\t\t\t\tif (!this.storage) {\r\n\t\t\t\t\t\tthis.storage = new FileManager(value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.storage.directory = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t*/\r\n\t\t\tcase 'enablePicsCache':\r\n\t\t\t\tif (this._initialized) {\r\n\t\t\t\t\tthis._resetChangelistUpdateTimer();\r\n\t\t\t\t\tthis._getLicenseInfo();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'changelistUpdateInterval':\r\n\t\t\t\tif (this._initialized) {\r\n\t\t\t\t\tthis._resetChangelistUpdateTimer();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'webCompatibilityMode':\r\n\t\t\tcase 'protocol':\r\n\t\t\t\tif (\r\n\t\t\t\t\t(option == 'webCompatibilityMode' && value && this.options.protocol == SteamUser.EConnectionProtocol.TCP) ||\r\n\t\t\t\t\t(option == 'protocol' && value == SteamUser.EConnectionProtocol.TCP && this.options.webCompatibilityMode)\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis._warn('webCompatibilityMode is enabled so connection protocol is being forced to WebSocket');\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'httpProxy':\r\n\t\t\t\tif (typeof this.options.httpProxy == 'string' && !this.options.httpProxy.includes('://')) {\r\n\t\t\t\t\tthis.options.httpProxy = 'http://' + this.options.httpProxy;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Make sure that the types of all options are valid.\r\n\t * @private\r\n\t */\r\n\t_checkOptionTypes() {\r\n\t\t// We'll infer types from DefaultOptions, but stuff that's null (for example) needs to be defined explicitly\r\n\t\tlet types = {\r\n\t\t\thttpProxy: 'string',\r\n\t\t\tlocalAddress: 'string',\r\n\t\t\tlocalPort: 'number',\r\n\t\t\tmachineIdFormat: 'array'\r\n\t\t};\r\n\r\n\t\tfor (let opt in DefaultOptions) {\r\n\t\t\tif (types[opt]) {\r\n\t\t\t\t// already specified\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttypes[opt] = typeof DefaultOptions[opt];\r\n\t\t}\r\n\r\n\t\tfor (let opt in this.options) {\r\n\t\t\tif (!types[opt]) {\r\n\t\t\t\t// no type specified for this option, so bail\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet requiredType = types[opt];\r\n\t\t\tlet providedType = typeof this.options[opt];\r\n\t\t\tif (providedType == 'object' && Array.isArray(this.options[opt])) {\r\n\t\t\t\tprovidedType = 'array';\r\n\t\t\t} else if (requiredType == 'number' && providedType == 'string' && !isNaN(this.options[opt])) {\r\n\t\t\t\tprovidedType = 'number';\r\n\t\t\t\tthis.options[opt] = parseFloat(this.options[opt]);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options[opt] !== null && requiredType != providedType) {\r\n\t\t\t\tthis._warn(`Incorrect type '${providedType}' provided for option ${opt}, '${requiredType}' expected. Resetting to default value ${DefaultOptions[opt]}`);\r\n\t\t\t\tthis._setOption(opt, DefaultOptions[opt]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Issue a warning\r\n\t * @param msg\r\n\t * @private\r\n\t */\r\n\t_warn(msg) {\r\n\t\tprocess.emitWarning(msg, 'Warning', 'steam-user');\r\n\t}\r\n}\r\n\r\n// I don't think it's possible to do this via class syntax, so add these onto the prototype\r\nSteamUser.prototype._handlers = {};\r\nSteamUser.prototype._handlerManager = new HandlerManager();\r\n\r\n// Export the SteamUser class before we require components that demand it\r\nmodule.exports = SteamUser;\r\n\r\n// Add enums\r\nrequire('./resources/enums.js');\r\n\r\n// Tack on our extra enums\r\nSteamUser.CurrencyData = require('./resources/CurrencyData.js');\r\nSteamUser.EClientUIMode = require('./resources/EClientUIMode.js');\r\nSteamUser.EConnectionProtocol = require('./resources/EConnectionProtocol.js');\r\nSteamUser.EMachineIDType = require('./resources/EMachineIDType.js');\r\nSteamUser.EPurchaseResult = require('./resources/EPurchaseResult.js');\r\nSteamUser.EPrivacyState = require('./resources/EPrivacyState.js');\r\n\r\n// And finally, require all the components that add their own methods to the class' prototype\r\nrequire('./components/connection.js');\r\nrequire('./components/messages.js');\r\nrequire('./components/filestorage.js');\r\nrequire('./components/webapi.js');\r\nrequire('./components/logon.js');\r\nrequire('./components/sentry.js');\r\nrequire('./components/web.js');\r\nrequire('./components/notifications.js');\r\nrequire('./components/apps.js');\r\nrequire('./components/appauth.js');\r\nrequire('./components/account.js');\r\nrequire('./components/gameservers.js');\r\nrequire('./components/utility.js');\r\nrequire('./components/trading.js');\r\nrequire('./components/friends.js');\r\nrequire('./components/chat.js');\r\nrequire('./components/twofactor.js');\r\nrequire('./components/pubfiles.js');\r\nrequire('./components/cdn.js');\r\nrequire('./components/econ.js');\r\nrequire('./components/store.js');\r\nrequire('./components/gamecoordinator.js');\r\nrequire('./components/familysharing.js');\r\n\r\n/**\r\n * Called when the request completes.\r\n * @callback SteamUser~genericEResultCallback\r\n * @param {Error|null} err - Error object on failure (with eresult property), null on success (represents EResult 1 - OK)\r\n */\r\n"]}