{"version":3,"sources":["jsdelivr-header.js","/npm/betfair-api-node@1.0.0/index.js"],"names":[],"mappings":"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","file":"/npm/betfair-api-node@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/betfair-api-node@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","/* jslint node:true, esnext:true */\n'use strict';\n\nvar https = require('https'),\n    querystring = require('querystring');\n\nclass Betfair {\n\n    /**\n     * @contructor\n     * @param {string} appKey - Betfair application key\n     * @param {string} [username] - Betfair username\n     * @param {string} [password] - Betfair password\n     * @param {boolean} [keepAlive=false] - Keep token alive till logout\n     */\n    constructor(appKey, username, password, keepAlive) {\n        this.appKey = appKey;\n        this.authKey = '';\n        this.username = username || '';\n        this.password = password || '';\n        this.keepAlive = keepAlive || false;\n        this.keepAliveTimeout = 3600000;\n        this.locale = 'en';\n\n        this.login();\n    }\n\n    /**\n     * @param {string} [username] - Betfair username\n     * @param {string} [password] - Betfair password\n     * @param {boolean} [keepAlive] - Keep token alive till logout\n     */\n    login (username, password, keepAlive) {\n        this.keepAlive = keepAlive || this.keepAlive;\n\n        return this.request('identitysso.betfair.com', '/api/login', 'application/x-www-form-urlencoded', {\n            username: username || this.username,\n            password: password || this.password\n        }).then((response) => {\n            this.authKey = response.token;\n            if (this.keepAlive) {\n                setTimeout(() => {\n                    this.keepAliveReset();\n                }, this.keepAliveTimeout);\n            }\n        });\n    }\n\n    logout () {\n        this.keepAlive = false;\n        return this.request('identitysso.betfair.com', '/api/logout');\n    }\n\n    keepAliveReset () {\n        if (this.keepAlive) {\n            this.request('identitysso.betfair.com', '/api/keepAlive').then((response) => {\n                if (response.status === 'FAIL') {\n                    this.login();\n                } else {\n                    setTimeout(() => {\n                        this.keepAliveReset();\n                    }, this.keepAliveTimeout);\n                }\n            });\n        }\n    }\n\n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listCompetitions (filter) {\n        return this.devApi('listCompetitions', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listCountries (filter) {\n        return this.devApi('listCountries', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {object} [params] - optional parameters (refer to betfair docs)\n     */\n    listCurrentOrders (params = {}) {\n        return this.devApi('listCurrentOrders', params).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {object} [params] - optional parameters (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listClearedOrders (params) {\n        return this.devApi('listClearedOrders', params).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listEvents (filter) {\n        return this.devApi('listEvents', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listEventTypes (filter) {\n        return this.devApi('listEventTypes', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {array} marketIds - array of market ids\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listMarketBook (marketIds, opts = {}) {\n        return this.devApi('listMarketBook', Object.assign({\n            \"marketIds\": marketIds,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {number} marketIds\n     * @param {number} selectionId\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n    */\n    listRunnerBook (marketId, selectionId, opts = {}) {\n        return this.devApi('listRunnerBook', Object.assign({\n            \"marketIds\": marketId,\n            \"selectionId\": selectionId,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @param {number} maxResults - result limit (greater than 0 less than a 1000)\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listMarketCatalogue (filter, maxResults, opts = {}) {\n        return this.devApi('listMarketCatalogue', Object.assign({\n            \"filter\": filter,\n            \"maxResults\": maxResults,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} [params] - optional parameters (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listMarketProfitAndLoss (params = {}) {\n        return this.devApi('listMarketProfitAndLoss', params).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listMarketTypes (filter) {\n        return this.devApi('listMarketTypes', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @param {string} granularity - DAYS/HOURS/MINUTES\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listTimeRanges (filter, granularity) {\n        return this.devApi('listTimeRanges', {\n            \"filter\": filter,\n            \"granularity\": granularity,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @param {object} filter - Filter options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listVenues (filter) {\n        return this.devApi('listVenues', {\n            \"filter\": filter,\n            \"locale\": this.locale\n        }).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {string} marketId - Id of market to bet in\n     * @param {array<Object>} instructions - Array of placeInstruction objects {@link Betfair.buildPlaceInstruction}\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     */\n    placeOrders (marketId, instructions, opts = {}) {\n        return this.devApi('placeOrders', Object.assign({\n            marketId: marketId,\n            instructions: instructions,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {string} marketId - Id of market bet was made\n     * @param {array<Object>} instructions - Array of placeInstruction objects {@link Betfair.buildCancelInstruction}\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     */\n    cancelOrders (marketId, instructions, opts = {}) {\n        return this.devApi('cancelOrders', Object.assign({\n            marketId: marketId,\n            instructions: instructions,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {string} marketId - Id of market bet was made\n     * @param {array<Object>} instructions - Array of placeInstruction objects {@link Betfair.buildUpdateInstruction}\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     */\n    updateOrders (marketId, instructions, opts = {}) {\n        return this.devApi('updateOrders', Object.assign({\n            marketId: marketId,\n            instructions: instructions,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {string} marketId - Id of market bet was made\n     * @param {array<Object>} instructions - Array of placeInstruction objects {@link Betfair.buildReplaceInstruction}\n     * @param {object} opts - optional parameters (refer to betfair docs)\n     */\n    replaceOrders (marketId, instructions, opts = {}) {\n        return this.devApi('replaceOrders', Object.assign({\n            marketId: marketId,\n            instructions: instructions,\n            \"locale\": this.locale\n        }, opts)).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @param {string} selectionId - Id of selection to bet on\n     * @param {number} handicap - handicap, default=0\n     * @param {string} orderType - LIMIT / LIMIT_ON_CLOSE / MARKET_ON_CLOSE\n     * @param {string} side - BACK / LAY\n     * @param {object} limitOrder - depending on orderType: {@link Betfair.buildLimitOrder} {@link Betfair.buildMarketOnCloseOrder} {@link Betfair.buildLimitOnCloseOrder}\n     */\n    static buildPlaceInstruction (selectionId, handicap, orderType, side, limitOrder) {\n        let orderTypeDictionary = {\n            LIMIT: 'limitOrder',\n            LIMIT_ON_CLOSE: 'limitOnCloseOrder',\n            MARKET_ON_CLOSE: 'marketOnCloseOrder'\n        },\n        instruction = {\n            selectionId: selectionId,\n            handicap: handicap || 0,\n            orderType: orderType,\n            side: side,\n            limitOrder: limitOrder\n        };\n        instruction[orderTypeDictionary[orderType]] = limitOrder;\n        return instruction;\n    }\n\n    static buildLimitOrder (size, price, persistenceType, timeInForce, minFillSize, betTargetType, betTargetSize) {\n        return {\n            size: size,\n            price: price,\n            persistenceType: persistenceType,\n            timeInForce: timeInForce,\n            minFillSize: minFillSize,\n            betTargetType: betTargetType,\n            betTargetSize: betTargetSize\n        };\n    }\n\n    static buildMarketOnCloseOrder (liability) {\n        return {\n            liability: liability\n        };\n    }\n\n    static buildLimitOnCloseOrder (liability, price) {\n        return {\n            liability: liability,\n            price: price\n        };\n    }\n\n    static buildReplaceInstruction(betId, newPrice) {\n        return {\n            betId: betId,\n            newPrice: newPrice\n        };\n    }\n\n    static buildCancelInstruction (betId, sizeReduction) {\n        return {\n            betId: betId,\n            sizeReduction: sizeReduction\n        };\n    }\n\n    static buildUpdateInstruction (betId, newPersistenceType) {\n        return {\n            betId: betId,\n            newPersistenceType: newPersistenceType\n        };\n    }\n    \n    /**\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    getAccountDetails () {\n        return this.accountsApi('getAccountDetails').then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    getAccountFunds (wallet) {\n        let params = {};\n        if (wallet) {\n            params.wallet = wallet;\n        }\n        return this.accountsApi('getAccountFunds', params).then((response) => {\n            return response;\n        });\n    }\n    \n    /**\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    getDeveloperAppKeys () {\n        return this.accountsApi('getDeveloperAppKeys').then((response) => {\n            return response;\n        }); \n    }\n    \n    /**\n     * @param {object} params - options (refer to betfair docs)\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    getAccountStatement (params = {}) {\n        return this.accountsApi('getAccountStatement', params).then((response) => {\n            return response;\n        }); \n    }\n\n    /**\n     * @param {string} fromCurrency - currency code\n     * @return {Promise<Array>} - Promise that resolves with the results in an array\n     */\n    listCurrencyRates (fromCurrency) {\n        let params = {};\n        if (fromCurrency) {\n            params.fromCurrency = fromCurrency;\n        }\n        return this.accountsApi('listCurrencyRates', params).then((response) => {\n            return response;\n        });\n    }\n\n    /**\n     * @private\n     * @param {string} method - api request method\n     * @param {object} params - payload parameters\n     */\n    devApi (method, params) {\n        var def = [{\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"SportsAPING/v1.0/\" + method,\n            \"params\": params\n        }];\n        return this.request('developers.betfair.com', '/api.betfair.com/exchange/betting/json-rpc/v1', 'text/plain;charset=UTF-8', JSON.stringify(def));\n    }\n    \n    /**\n     * @private\n     * @param {string} method - api request method\n     * @param {object} params - payload parameters\n     */\n    accountsApi (method, params) {\n        var def = [{\n            \"jsonrpc\": \"2.0\",\n            \"method\": \"AccountAPING/v1.0/\" + method,\n            \"params\": params\n        }];\n        return this.request('developers.betfair.com', '/api.betfair.com/exchange/account/json-rpc/v1', 'text/plain;charset=UTF-8', JSON.stringify(def));\n    }\n\n    /**\n     * @private\n     * @param {string} host - hostname of endpoint\n     * @param {string} path - path of endpoint\n     * @param {string} contentType - content type of payload\n     * @param {object} params - payload\n     */\n    request (host, path, contentType, params) {\n        return new Promise((resolve, reject) => {\n            var options = {\n                    host: host,\n                    path: path,\n                    port: 443,\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': contentType || 'application/json',\n                        'X-Application': this.appKey,\n                        'Accept': 'application/json'\n                    }\n                },\n                httpReq;\n\n            if (contentType === 'application/x-www-form-urlencoded') {\n                params = querystring.stringify(params);\n                options.headers['Content-Length'] = params.length;\n            }\n\n            if (this.authKey) {\n                options.headers['X-Authentication'] = this.authKey;\n            }\n\n            httpReq = https.request(options, function (res) {\n                var data = '';\n                res.setEncoding('utf8');\n                res.on('data', function (chunk) {\n                    data += chunk;\n                });\n                res.on('end', function () {\n                    var response = JSON.parse(data);\n                    if (response) {\n                        resolve(response);\n                    } else {\n                        reject();\n                    }\n                });\n\n                res.on('error', function (err) {\n                    throw new Error(err);\n                });\n            });\n            if (params) {\n                httpReq.write(params);\n            }\n            httpReq.end();\n        });\n    }\n}\n\nmodule.exports = Betfair;\n"]}