/* eslint-disable */ // --- Polyfill Start --- var uniFetch = function (url, options) { options = options || {}; return new Promise(function (resolve, reject) { var method = (options.method || 'GET').toUpperCase(); var header = options.headers || {}; if (typeof header.forEach === 'function') { var plain = {}; header.forEach(function (v, k) { plain[k] = v; }); header = plain; } if (!header['Content-Type'] && method !== 'GET') { header['Content-Type'] = 'application/json'; } console.log(`[Fetch Polyfill] ${method} ${url}`); uni.request({ url: url, method: method, header: header, data: options.body, dataType: 'text', responseType: 'text', success: function (res) { resolve({ ok: res.statusCode >= 200 && res.statusCode < 300, status: res.statusCode, statusText: res.statusCode === 200 ? 'OK' : '', headers: { get: function (key) { return res.header[key] || res.header[key.toLowerCase()]; } }, text: function () { return Promise.resolve(res.data); }, json: function () { try { return Promise.resolve(JSON.parse(res.data)); } catch (e) { return Promise.reject(e); } } }); }, fail: function (err) { reject(new TypeError(err.errMsg || 'Network request failed')); } }); }); }; // 显式声明模块级变量,确保文件内引用的 fetch 都指向这里 var fetch = uniFetch; // 同时尝试覆盖全局对象,以防万一 if (typeof globalThis !== "undefined") globalThis.fetch = uniFetch; if (typeof global !== "undefined") global.fetch = uniFetch; if (typeof window !== "undefined") window.fetch = uniFetch; // --- Polyfill End --- var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // ../../node_modules/whatwg-fetch/fetch.js var global = typeof globalThis !== "undefined" && globalThis || typeof self !== "undefined" && self || typeof global !== "undefined" && global; var support = { searchParams: "URLSearchParams" in global, iterable: "Symbol" in global && "iterator" in Symbol, blob: "FileReader" in global && "Blob" in global && function () { try { new Blob(); return true; } catch (e) { return false; } }(), formData: "FormData" in global, arrayBuffer: "ArrayBuffer" in global }; function isDataView(obj) { return obj && DataView.prototype.isPrototypeOf(obj); } if (support.arrayBuffer) { viewClasses = [ "[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]" ]; isArrayBufferView = ArrayBuffer.isView || function (obj) { return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; }; } var viewClasses; var isArrayBufferView; function normalizeName(name) { if (typeof name !== "string") { name = String(name); } if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === "") { throw new TypeError('Invalid character in header field name: "' + name + '"'); } return name.toLowerCase(); } function normalizeValue(value) { if (typeof value !== "string") { value = String(value); } return value; } function iteratorFor(items) { var iterator = { next: function () { var value = items.shift(); return { done: value === void 0, value }; } }; if (support.iterable) { iterator[Symbol.iterator] = function () { return iterator; }; } return iterator; } function Headers(headers) { this.map = {}; if (headers instanceof Headers) { headers.forEach(function (value, name) { this.append(name, value); }, this); } else if (Array.isArray(headers)) { headers.forEach(function (header) { this.append(header[0], header[1]); }, this); } else if (headers) { Object.getOwnPropertyNames(headers).forEach(function (name) { this.append(name, headers[name]); }, this); } } Headers.prototype.append = function (name, value) { name = normalizeName(name); value = normalizeValue(value); var oldValue = this.map[name]; this.map[name] = oldValue ? oldValue + ", " + value : value; }; Headers.prototype["delete"] = function (name) { delete this.map[normalizeName(name)]; }; Headers.prototype.get = function (name) { name = normalizeName(name); return this.has(name) ? this.map[name] : null; }; Headers.prototype.has = function (name) { return this.map.hasOwnProperty(normalizeName(name)); }; Headers.prototype.set = function (name, value) { this.map[normalizeName(name)] = normalizeValue(value); }; Headers.prototype.forEach = function (callback, thisArg) { for (var name in this.map) { if (this.map.hasOwnProperty(name)) { callback.call(thisArg, this.map[name], name, this); } } }; Headers.prototype.keys = function () { var items = []; this.forEach(function (value, name) { items.push(name); }); return iteratorFor(items); }; Headers.prototype.values = function () { var items = []; this.forEach(function (value) { items.push(value); }); return iteratorFor(items); }; Headers.prototype.entries = function () { var items = []; this.forEach(function (value, name) { items.push([name, value]); }); return iteratorFor(items); }; if (support.iterable) { Headers.prototype[Symbol.iterator] = Headers.prototype.entries; } function consumed(body) { if (body.bodyUsed) { return Promise.reject(new TypeError("Already read")); } body.bodyUsed = true; } function fileReaderReady(reader) { return new Promise(function (resolve, reject) { reader.onload = function () { resolve(reader.result); }; reader.onerror = function () { reject(reader.error); }; }); } function readBlobAsArrayBuffer(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsArrayBuffer(blob); return promise; } function readBlobAsText(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsText(blob); return promise; } function readArrayBufferAsText(buf) { var view = new Uint8Array(buf); var chars2 = new Array(view.length); for (var i = 0; i < view.length; i++) { chars2[i] = String.fromCharCode(view[i]); } return chars2.join(""); } function bufferClone(buf) { if (buf.slice) { return buf.slice(0); } else { var view = new Uint8Array(buf.byteLength); view.set(new Uint8Array(buf)); return view.buffer; } } function Body() { this.bodyUsed = false; this._initBody = function (body) { this.bodyUsed = this.bodyUsed; this._bodyInit = body; if (!body) { this._bodyText = ""; } else if (typeof body === "string") { this._bodyText = body; } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { this._bodyBlob = body; } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { this._bodyFormData = body; } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this._bodyText = body.toString(); } else if (support.arrayBuffer && support.blob && isDataView(body)) { this._bodyArrayBuffer = bufferClone(body.buffer); this._bodyInit = new Blob([this._bodyArrayBuffer]); } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { this._bodyArrayBuffer = bufferClone(body); } else { this._bodyText = body = Object.prototype.toString.call(body); } if (!this.headers.get("content-type")) { if (typeof body === "string") { this.headers.set("content-type", "text/plain;charset=UTF-8"); } else if (this._bodyBlob && this._bodyBlob.type) { this.headers.set("content-type", this._bodyBlob.type); } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); } } }; if (support.blob) { this.blob = function () { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return Promise.resolve(this._bodyBlob); } else if (this._bodyArrayBuffer) { return Promise.resolve(new Blob([this._bodyArrayBuffer])); } else if (this._bodyFormData) { throw new Error("could not read FormData body as blob"); } else { return Promise.resolve(new Blob([this._bodyText])); } }; this.arrayBuffer = function () { if (this._bodyArrayBuffer) { var isConsumed = consumed(this); if (isConsumed) { return isConsumed; } if (ArrayBuffer.isView(this._bodyArrayBuffer)) { return Promise.resolve( this._bodyArrayBuffer.buffer.slice( this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength ) ); } else { return Promise.resolve(this._bodyArrayBuffer); } } else { return this.blob().then(readBlobAsArrayBuffer); } }; } this.text = function () { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return readBlobAsText(this._bodyBlob); } else if (this._bodyArrayBuffer) { return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); } else if (this._bodyFormData) { throw new Error("could not read FormData body as text"); } else { return Promise.resolve(this._bodyText); } }; if (support.formData) { this.formData = function () { return this.text().then(decode); }; } this.json = function () { return this.text().then(JSON.parse); }; return this; } var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; function normalizeMethod(method) { var upcased = method.toUpperCase(); return methods.indexOf(upcased) > -1 ? upcased : method; } function Request(input, options) { if (!(this instanceof Request)) { throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.'); } options = options || {}; var body = options.body; if (input instanceof Request) { if (input.bodyUsed) { throw new TypeError("Already read"); } this.url = input.url; this.credentials = input.credentials; if (!options.headers) { this.headers = new Headers(input.headers); } this.method = input.method; this.mode = input.mode; this.signal = input.signal; if (!body && input._bodyInit != null) { body = input._bodyInit; input.bodyUsed = true; } } else { this.url = String(input); } this.credentials = options.credentials || this.credentials || "same-origin"; if (options.headers || !this.headers) { this.headers = new Headers(options.headers); } this.method = normalizeMethod(options.method || this.method || "GET"); this.mode = options.mode || this.mode || null; this.signal = options.signal || this.signal; this.referrer = null; if ((this.method === "GET" || this.method === "HEAD") && body) { throw new TypeError("Body not allowed for GET or HEAD requests"); } this._initBody(body); if (this.method === "GET" || this.method === "HEAD") { if (options.cache === "no-store" || options.cache === "no-cache") { var reParamSearch = /([?&])_=[^&]*/; if (reParamSearch.test(this.url)) { this.url = this.url.replace(reParamSearch, "$1_=" + (/* @__PURE__ */ new Date()).getTime()); } else { var reQueryString = /\?/; this.url += (reQueryString.test(this.url) ? "&" : "?") + "_=" + (/* @__PURE__ */ new Date()).getTime(); } } } } Request.prototype.clone = function () { return new Request(this, { body: this._bodyInit }); }; function decode(body) { var form = new FormData(); body.trim().split("&").forEach(function (bytes) { if (bytes) { var split = bytes.split("="); var name = split.shift().replace(/\+/g, " "); var value = split.join("=").replace(/\+/g, " "); form.append(decodeURIComponent(name), decodeURIComponent(value)); } }); return form; } function parseHeaders(rawHeaders) { var headers = new Headers(); var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); preProcessedHeaders.split("\r").map(function (header) { return header.indexOf("\n") === 0 ? header.substr(1, header.length) : header; }).forEach(function (line) { var parts = line.split(":"); var key = parts.shift().trim(); if (key) { var value = parts.join(":").trim(); headers.append(key, value); } }); return headers; } Body.call(Request.prototype); function Response(bodyInit, options) { if (!(this instanceof Response)) { throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.'); } if (!options) { options = {}; } this.type = "default"; this.status = options.status === void 0 ? 200 : options.status; this.ok = this.status >= 200 && this.status < 300; this.statusText = options.statusText === void 0 ? "" : "" + options.statusText; this.headers = new Headers(options.headers); this.url = options.url || ""; this._initBody(bodyInit); } Body.call(Response.prototype); Response.prototype.clone = function () { return new Response(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new Headers(this.headers), url: this.url }); }; Response.error = function () { var response = new Response(null, { status: 0, statusText: "" }); response.type = "error"; return response; }; var redirectStatuses = [301, 302, 303, 307, 308]; Response.redirect = function (url, status) { if (redirectStatuses.indexOf(status) === -1) { throw new RangeError("Invalid status code"); } return new Response(null, { status, headers: { location: url } }); }; var DOMException = global.DOMException; try { new DOMException(); } catch (err) { DOMException = function (message, name) { this.message = message; this.name = name; var error = Error(message); this.stack = error.stack; }; DOMException.prototype = Object.create(Error.prototype); DOMException.prototype.constructor = DOMException; } function fetch2(input, init) { return new Promise(function (resolve, reject) { var request = new Request(input, init); if (request.signal && request.signal.aborted) { return reject(new DOMException("Aborted", "AbortError")); } var xhr = new XMLHttpRequest(); function abortXhr() { xhr.abort(); } xhr.onload = function () { var options = { status: xhr.status, statusText: xhr.statusText, headers: parseHeaders(xhr.getAllResponseHeaders() || "") }; options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL"); var body = "response" in xhr ? xhr.response : xhr.responseText; setTimeout(function () { resolve(new Response(body, options)); }, 0); }; xhr.onerror = function () { setTimeout(function () { reject(new TypeError("Network request failed")); }, 0); }; xhr.ontimeout = function () { setTimeout(function () { reject(new TypeError("Network request failed")); }, 0); }; xhr.onabort = function () { setTimeout(function () { reject(new DOMException("Aborted", "AbortError")); }, 0); }; function fixUrl(url) { try { return url === "" && global.location.href ? global.location.href : url; } catch (e) { return url; } } xhr.open(request.method, fixUrl(request.url), true); if (request.credentials === "include") { xhr.withCredentials = true; } else if (request.credentials === "omit") { xhr.withCredentials = false; } if ("responseType" in xhr) { if (support.blob) { xhr.responseType = "blob"; } else if (support.arrayBuffer && request.headers.get("Content-Type") && request.headers.get("Content-Type").indexOf("application/octet-stream") !== -1) { xhr.responseType = "arraybuffer"; } } if (init && typeof init.headers === "object" && !(init.headers instanceof Headers)) { Object.getOwnPropertyNames(init.headers).forEach(function (name) { xhr.setRequestHeader(name, normalizeValue(init.headers[name])); }); } else { request.headers.forEach(function (value, name) { xhr.setRequestHeader(name, value); }); } if (request.signal) { request.signal.addEventListener("abort", abortXhr); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { request.signal.removeEventListener("abort", abortXhr); } }; } xhr.send(typeof request._bodyInit === "undefined" ? null : request._bodyInit); }); } fetch2.polyfill = true; if (!global.fetch) { global.fetch = fetch2; global.Headers = Headers; global.Request = Request; global.Response = Response; } // ../../node_modules/js-base64/base64.mjs var _hasatob = typeof atob === "function"; var _hasbtoa = typeof btoa === "function"; var _hasBuffer = typeof Buffer === "function"; var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0; var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0; var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var b64chs = Array.prototype.slice.call(b64ch); var b64tab = ((a) => { let tab = {}; a.forEach((c, i) => tab[c] = i); return tab; })(b64chs); var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; var _fromCC = String.fromCharCode.bind(String); var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : (it) => new Uint8Array(Array.prototype.slice.call(it, 0)); var _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_"); var _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ""); var btoaPolyfill = (bin) => { let u32, c0, c1, c2, asc = ""; const pad = bin.length % 3; for (let i = 0; i < bin.length;) { if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255) throw new TypeError("invalid character found"); u32 = c0 << 16 | c1 << 8 | c2; asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63]; } return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; }; var _btoa = _hasbtoa ? (bin) => btoa(bin) : _hasBuffer ? (bin) => Buffer.from(bin, "binary").toString("base64") : btoaPolyfill; var _fromUint8Array = _hasBuffer ? (u8a) => Buffer.from(u8a).toString("base64") : (u8a) => { const maxargs = 4096; let strs = []; for (let i = 0, l = u8a.length; i < l; i += maxargs) { strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); } return _btoa(strs.join("")); }; var cb_utob = (c) => { if (c.length < 2) { var cc = c.charCodeAt(0); return cc < 128 ? c : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63); } else { var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320); return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63); } }; var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; var utob = (u) => u.replace(re_utob, cb_utob); var _encode = _hasBuffer ? (s) => Buffer.from(s, "utf8").toString("base64") : _TE ? (s) => _fromUint8Array(_TE.encode(s)) : (s) => _btoa(utob(s)); var encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src); var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; var cb_btou = (cccc) => { switch (cccc.length) { case 4: var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536; return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320); case 3: return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2)); default: return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1)); } }; var btou = (b) => b.replace(re_btou, cb_btou); var atobPolyfill = (asc) => { asc = asc.replace(/\s+/g, ""); if (!b64re.test(asc)) throw new TypeError("malformed base64."); asc += "==".slice(2 - (asc.length & 3)); let u24, bin = "", r1, r2; for (let i = 0; i < asc.length;) { u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]); bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); } return bin; }; var _atob = _hasatob ? (asc) => atob(_tidyB64(asc)) : _hasBuffer ? (asc) => Buffer.from(asc, "base64").toString("binary") : atobPolyfill; var _toUint8Array = _hasBuffer ? (a) => _U8Afrom(Buffer.from(a, "base64")) : (a) => _U8Afrom(_atob(a).split("").map((c) => c.charCodeAt(0))); var _decode = _hasBuffer ? (a) => Buffer.from(a, "base64").toString("utf8") : _TD ? (a) => _TD.decode(_toUint8Array(a)) : (a) => btou(_atob(a)); var _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == "-" ? "+" : "/")); var decode2 = (src) => _decode(_unURI(src)); // utils.ts function buildFetchOptions(method, options, bodyJson) { const fetchOptions = __spreadValues(__spreadValues({}, { method }), options); fetchOptions.headers = __spreadValues({}, options.headers); if (typeof XMLHttpRequest !== "undefined") { const descriptor = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, "withCredentials"); if (!(descriptor == null ? void 0 : descriptor.set)) { fetchOptions.credentials = "cocos-ignore"; } } if (!Object.keys(fetchOptions.headers).includes("Accept")) { fetchOptions.headers["Accept"] = "application/json"; } if (!Object.keys(fetchOptions.headers).includes("Content-Type")) { fetchOptions.headers["Content-Type"] = "application/json"; } Object.keys(fetchOptions.headers).forEach((key) => { if (!fetchOptions.headers[key]) { delete fetchOptions.headers[key]; } }); if (bodyJson) { fetchOptions.body = bodyJson; } return fetchOptions; } // api.gen.ts var NakamaApi = class { constructor(serverKey, basePath, timeoutMs) { this.serverKey = serverKey; this.basePath = basePath; this.timeoutMs = timeoutMs; } /** A healthcheck which load balancers can use to check the service. */ healthcheck(bearerToken, options = {}) { const urlPath = "/healthcheck"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete the current user's account. */ deleteAccount(bearerToken, options = {}) { const urlPath = "/v2/account"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Fetch the current user's account. */ getAccount(bearerToken, options = {}) { const urlPath = "/v2/account"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Update fields in the current user's account. */ updateAccount(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("PUT", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with an Apple ID against the server. */ authenticateApple(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/apple"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with a custom id against the server. */ authenticateCustom(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/custom"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with a device id against the server. */ authenticateDevice(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/device"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with an email+password against the server. */ authenticateEmail(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/email"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with a Facebook OAuth token against the server. */ authenticateFacebook(basicAuthUsername, basicAuthPassword, account, create, username, sync, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/facebook"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); queryParams.set("sync", sync); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with a Facebook Instant Game token against the server. */ authenticateFacebookInstantGame(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/facebookinstantgame"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with Apple's GameCenter against the server. */ authenticateGameCenter(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/gamecenter"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with Google against the server. */ authenticateGoogle(basicAuthUsername, basicAuthPassword, account, create, username, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/google"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Authenticate a user with Steam against the server. */ authenticateSteam(basicAuthUsername, basicAuthPassword, account, create, username, sync, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/authenticate/steam"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("create", create); queryParams.set("username", username); queryParams.set("sync", sync); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add an Apple ID to the social profiles on the current user's account. */ linkApple(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/apple"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add a custom ID to the social profiles on the current user's account. */ linkCustom(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/custom"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add a device ID to the social profiles on the current user's account. */ linkDevice(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/device"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add an email+password to the social profiles on the current user's account. */ linkEmail(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/email"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add Facebook to the social profiles on the current user's account. */ linkFacebook(bearerToken, account, sync, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/facebook"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("sync", sync); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add Facebook Instant Game to the social profiles on the current user's account. */ linkFacebookInstantGame(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/facebookinstantgame"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add Apple's GameCenter to the social profiles on the current user's account. */ linkGameCenter(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/gamecenter"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add Google to the social profiles on the current user's account. */ linkGoogle(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/google"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add Steam to the social profiles on the current user's account. */ linkSteam(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/link/steam"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Refresh a user's session using a refresh token retrieved from a previous authentication request. */ sessionRefresh(basicAuthUsername, basicAuthPassword, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/session/refresh"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (basicAuthUsername) { fetchOptions.headers["Authorization"] = "Basic " + encode(basicAuthUsername + ":" + basicAuthPassword); } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove the Apple ID from the social profiles on the current user's account. */ unlinkApple(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/apple"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove the custom ID from the social profiles on the current user's account. */ unlinkCustom(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/custom"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove the device ID from the social profiles on the current user's account. */ unlinkDevice(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/device"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove the email+password from the social profiles on the current user's account. */ unlinkEmail(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/email"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove Facebook from the social profiles on the current user's account. */ unlinkFacebook(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/facebook"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove Facebook Instant Game profile from the social profiles on the current user's account. */ unlinkFacebookInstantGame(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/facebookinstantgame"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove Apple's GameCenter from the social profiles on the current user's account. */ unlinkGameCenter(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/gamecenter"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove Google from the social profiles on the current user's account. */ unlinkGoogle(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/google"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Remove Steam from the social profiles on the current user's account. */ unlinkSteam(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/account/unlink/steam"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List a channel's message history. */ listChannelMessages(bearerToken, channelId, limit, forward, cursor, options = {}) { if (channelId === null || channelId === void 0) { throw new Error("'channelId' is a required parameter but is null or undefined."); } const urlPath = "/v2/channel/{channelId}".replace("{channelId}", encodeURIComponent(String(channelId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("forward", forward); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Submit an event for processing in the server's registered runtime custom events handler. */ event(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/event"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete one or more users by ID or username. */ deleteFriends(bearerToken, ids, usernames, options = {}) { const urlPath = "/v2/friend"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("ids", ids); queryParams.set("usernames", usernames); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List all friends for the current user. */ listFriends(bearerToken, limit, state, cursor, options = {}) { const urlPath = "/v2/friend"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("state", state); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add friends by ID or username to a user's account. */ addFriends(bearerToken, ids, usernames, options = {}) { const urlPath = "/v2/friend"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("ids", ids); queryParams.set("usernames", usernames); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Block one or more users by ID or username. */ blockFriends(bearerToken, ids, usernames, options = {}) { const urlPath = "/v2/friend/block"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("ids", ids); queryParams.set("usernames", usernames); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Import Facebook friends and add them to a user's account. */ importFacebookFriends(bearerToken, account, reset, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/friend/facebook"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("reset", reset); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List friends of friends for the current user. */ listFriendsOfFriends(bearerToken, limit, cursor, options = {}) { const urlPath = "/v2/friend/friends"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Import Steam friends and add them to a user's account. */ importSteamFriends(bearerToken, account, reset, options = {}) { if (account === null || account === void 0) { throw new Error("'account' is a required parameter but is null or undefined."); } const urlPath = "/v2/friend/steam"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("reset", reset); let bodyJson = ""; bodyJson = JSON.stringify(account || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List groups based on given filters. */ listGroups(bearerToken, name, cursor, limit, langTag, members, open, options = {}) { const urlPath = "/v2/group"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("name", name); queryParams.set("cursor", cursor); queryParams.set("limit", limit); queryParams.set("lang_tag", langTag); queryParams.set("members", members); queryParams.set("open", open); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Create a new group with the current user as the owner. */ createGroup(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/group"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete a group by ID. */ deleteGroup(bearerToken, groupId, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Update fields in a given group. */ updateGroup(bearerToken, groupId, body, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("PUT", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Add users to a group. */ addGroupUsers(bearerToken, groupId, userIds, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/add".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_ids", userIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Ban a set of users from a group. */ banGroupUsers(bearerToken, groupId, userIds, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/ban".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_ids", userIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Demote a set of users in a group to the next role down. */ demoteGroupUsers(bearerToken, groupId, userIds, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/demote".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_ids", userIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Immediately join an open group, or request to join a closed one. */ joinGroup(bearerToken, groupId, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/join".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Kick a set of users from a group. */ kickGroupUsers(bearerToken, groupId, userIds, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/kick".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_ids", userIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Leave a group the user is a member of. */ leaveGroup(bearerToken, groupId, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/leave".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Promote a set of users in a group to the next role up. */ promoteGroupUsers(bearerToken, groupId, userIds, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/promote".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_ids", userIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List all users that are part of a group. */ listGroupUsers(bearerToken, groupId, limit, state, cursor, options = {}) { if (groupId === null || groupId === void 0) { throw new Error("'groupId' is a required parameter but is null or undefined."); } const urlPath = "/v2/group/{groupId}/user".replace("{groupId}", encodeURIComponent(String(groupId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("state", state); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate Apple IAP Receipt */ validatePurchaseApple(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/purchase/apple"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate FB Instant IAP Receipt */ validatePurchaseFacebookInstant(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/purchase/facebookinstant"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate Google IAP Receipt */ validatePurchaseGoogle(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/purchase/google"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate Huawei IAP Receipt */ validatePurchaseHuawei(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/purchase/huawei"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List user's subscriptions. */ listSubscriptions(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/subscription"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate Apple Subscription Receipt */ validateSubscriptionApple(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/subscription/apple"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Validate Google Subscription Receipt */ validateSubscriptionGoogle(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/subscription/google"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Get subscription by product id. */ getSubscription(bearerToken, productId, options = {}) { if (productId === null || productId === void 0) { throw new Error("'productId' is a required parameter but is null or undefined."); } const urlPath = "/v2/iap/subscription/{productId}".replace("{productId}", encodeURIComponent(String(productId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete a leaderboard record. */ deleteLeaderboardRecord(bearerToken, leaderboardId, options = {}) { if (leaderboardId === null || leaderboardId === void 0) { throw new Error("'leaderboardId' is a required parameter but is null or undefined."); } const urlPath = "/v2/leaderboard/{leaderboardId}".replace("{leaderboardId}", encodeURIComponent(String(leaderboardId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List leaderboard records. */ listLeaderboardRecords(bearerToken, leaderboardId, ownerIds, limit, cursor, expiry, options = {}) { if (leaderboardId === null || leaderboardId === void 0) { throw new Error("'leaderboardId' is a required parameter but is null or undefined."); } const urlPath = "/v2/leaderboard/{leaderboardId}".replace("{leaderboardId}", encodeURIComponent(String(leaderboardId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("owner_ids", ownerIds); queryParams.set("limit", limit); queryParams.set("cursor", cursor); queryParams.set("expiry", expiry); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Write a record to a leaderboard. */ writeLeaderboardRecord(bearerToken, leaderboardId, record, options = {}) { if (leaderboardId === null || leaderboardId === void 0) { throw new Error("'leaderboardId' is a required parameter but is null or undefined."); } if (record === null || record === void 0) { throw new Error("'record' is a required parameter but is null or undefined."); } const urlPath = "/v2/leaderboard/{leaderboardId}".replace("{leaderboardId}", encodeURIComponent(String(leaderboardId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(record || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List leaderboard records that belong to a user. */ listLeaderboardRecordsAroundOwner(bearerToken, leaderboardId, ownerId, limit, expiry, cursor, options = {}) { if (leaderboardId === null || leaderboardId === void 0) { throw new Error("'leaderboardId' is a required parameter but is null or undefined."); } if (ownerId === null || ownerId === void 0) { throw new Error("'ownerId' is a required parameter but is null or undefined."); } const urlPath = "/v2/leaderboard/{leaderboardId}/owner/{ownerId}".replace("{leaderboardId}", encodeURIComponent(String(leaderboardId))).replace("{ownerId}", encodeURIComponent(String(ownerId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("expiry", expiry); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Fetch list of running matches. */ listMatches(bearerToken, limit, authoritative, label, minSize, maxSize, query, options = {}) { const urlPath = "/v2/match"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("authoritative", authoritative); queryParams.set("label", label); queryParams.set("min_size", minSize); queryParams.set("max_size", maxSize); queryParams.set("query", query); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete one or more notifications for the current user. */ deleteNotifications(bearerToken, ids, options = {}) { const urlPath = "/v2/notification"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("ids", ids); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Fetch list of notifications. */ listNotifications(bearerToken, limit, cacheableCursor, options = {}) { const urlPath = "/v2/notification"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("cacheable_cursor", cacheableCursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Execute a Lua function on the server. */ rpcFunc2(bearerToken, id, payload, httpKey, options = {}) { if (id === null || id === void 0) { throw new Error("'id' is a required parameter but is null or undefined."); } const urlPath = "/v2/rpc/{id}".replace("{id}", encodeURIComponent(String(id))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("payload", payload); queryParams.set("http_key", httpKey); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Execute a Lua function on the server. */ rpcFunc(bearerToken, id, body, httpKey, options = {}) { if (id === null || id === void 0) { throw new Error("'id' is a required parameter but is null or undefined."); } if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/rpc/{id}".replace("{id}", encodeURIComponent(String(id))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("http_key", httpKey); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user. */ sessionLogout(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/session/logout"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Get storage objects. */ readStorageObjects(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/storage"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Write objects into the storage engine. */ writeStorageObjects(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/storage"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("PUT", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete one or more objects by ID or username. */ deleteStorageObjects(bearerToken, body, options = {}) { if (body === null || body === void 0) { throw new Error("'body' is a required parameter but is null or undefined."); } const urlPath = "/v2/storage/delete"; const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(body || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("PUT", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List publicly readable storage objects in a given collection. */ listStorageObjects(bearerToken, collection, userId, limit, cursor, options = {}) { if (collection === null || collection === void 0) { throw new Error("'collection' is a required parameter but is null or undefined."); } const urlPath = "/v2/storage/{collection}".replace("{collection}", encodeURIComponent(String(collection))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("user_id", userId); queryParams.set("limit", limit); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List publicly readable storage objects in a given collection. */ listStorageObjects2(bearerToken, collection, userId, limit, cursor, options = {}) { if (collection === null || collection === void 0) { throw new Error("'collection' is a required parameter but is null or undefined."); } if (userId === null || userId === void 0) { throw new Error("'userId' is a required parameter but is null or undefined."); } const urlPath = "/v2/storage/{collection}/{userId}".replace("{collection}", encodeURIComponent(String(collection))).replace("{userId}", encodeURIComponent(String(userId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List current or upcoming tournaments. */ listTournaments(bearerToken, categoryStart, categoryEnd, startTime, endTime, limit, cursor, options = {}) { const urlPath = "/v2/tournament"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("category_start", categoryStart); queryParams.set("category_end", categoryEnd); queryParams.set("start_time", startTime); queryParams.set("end_time", endTime); queryParams.set("limit", limit); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Delete a tournament record. */ deleteTournamentRecord(bearerToken, tournamentId, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}".replace("{tournamentId}", encodeURIComponent(String(tournamentId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("DELETE", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List tournament records. */ listTournamentRecords(bearerToken, tournamentId, ownerIds, limit, cursor, expiry, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}".replace("{tournamentId}", encodeURIComponent(String(tournamentId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("owner_ids", ownerIds); queryParams.set("limit", limit); queryParams.set("cursor", cursor); queryParams.set("expiry", expiry); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Write a record to a tournament. */ writeTournamentRecord2(bearerToken, tournamentId, record, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } if (record === null || record === void 0) { throw new Error("'record' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}".replace("{tournamentId}", encodeURIComponent(String(tournamentId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(record || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Write a record to a tournament. */ writeTournamentRecord(bearerToken, tournamentId, record, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } if (record === null || record === void 0) { throw new Error("'record' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}".replace("{tournamentId}", encodeURIComponent(String(tournamentId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; bodyJson = JSON.stringify(record || {}); const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("PUT", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Attempt to join an open and running tournament. */ joinTournament(bearerToken, tournamentId, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}/join".replace("{tournamentId}", encodeURIComponent(String(tournamentId))); const queryParams = /* @__PURE__ */ new Map(); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("POST", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List tournament records for a given owner. */ listTournamentRecordsAroundOwner(bearerToken, tournamentId, ownerId, limit, expiry, cursor, options = {}) { if (tournamentId === null || tournamentId === void 0) { throw new Error("'tournamentId' is a required parameter but is null or undefined."); } if (ownerId === null || ownerId === void 0) { throw new Error("'ownerId' is a required parameter but is null or undefined."); } const urlPath = "/v2/tournament/{tournamentId}/owner/{ownerId}".replace("{tournamentId}", encodeURIComponent(String(tournamentId))).replace("{ownerId}", encodeURIComponent(String(ownerId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("expiry", expiry); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** Fetch zero or more users by ID and/or username. */ getUsers(bearerToken, ids, usernames, facebookIds, options = {}) { const urlPath = "/v2/user"; const queryParams = /* @__PURE__ */ new Map(); queryParams.set("ids", ids); queryParams.set("usernames", usernames); queryParams.set("facebook_ids", facebookIds); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } /** List groups the current user belongs to. */ listUserGroups(bearerToken, userId, limit, state, cursor, options = {}) { if (userId === null || userId === void 0) { throw new Error("'userId' is a required parameter but is null or undefined."); } const urlPath = "/v2/user/{userId}/group".replace("{userId}", encodeURIComponent(String(userId))); const queryParams = /* @__PURE__ */ new Map(); queryParams.set("limit", limit); queryParams.set("state", state); queryParams.set("cursor", cursor); let bodyJson = ""; const fullUrl = this.buildFullUrl(this.basePath, urlPath, queryParams); const fetchOptions = buildFetchOptions("GET", options, bodyJson); if (bearerToken) { fetchOptions.headers["Authorization"] = "Bearer " + bearerToken; } return Promise.race([ fetch(fullUrl, fetchOptions).then((response) => { if (response.status == 204) { return response; } else if (response.status >= 200 && response.status < 300) { return response.json(); } else { throw response; } }), new Promise( (_, reject) => setTimeout(reject, this.timeoutMs, "Request timed out.") ) ]); } buildFullUrl(basePath, fragment, queryParams) { let fullPath = basePath + fragment + "?"; for (let [k, v] of queryParams) { if (v instanceof Array) { fullPath += v.reduce((prev, curr) => { return prev + encodeURIComponent(k) + "=" + encodeURIComponent(curr) + "&"; }, ""); } else { if (v != null) { fullPath += encodeURIComponent(k) + "=" + encodeURIComponent(v) + "&"; } } } return fullPath; } }; // session.ts var Session = class { constructor(token, refresh_token, created) { this.created = created; this.token = token; this.refresh_token = refresh_token; this.created_at = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3); this.update(token, refresh_token); } isexpired(currenttime) { return this.expires_at - currenttime < 0; } isrefreshexpired(currenttime) { return this.refresh_expires_at - currenttime < 0; } update(token, refreshToken) { const tokenParts = token.split("."); if (tokenParts.length != 3) { throw "jwt is not valid."; } const tokenDecoded = JSON.parse(_atob(tokenParts[1])); const tokenExpiresAt = Math.floor(parseInt(tokenDecoded["exp"])); if (refreshToken) { const refreshTokenParts = refreshToken.split("."); if (refreshTokenParts.length != 3) { throw "refresh jwt is not valid."; } const refreshTokenDecoded = JSON.parse(_atob(refreshTokenParts[1])); const refreshTokenExpiresAt = Math.floor(parseInt(refreshTokenDecoded["exp"])); this.refresh_expires_at = refreshTokenExpiresAt; this.refresh_token = refreshToken; } this.token = token; this.expires_at = tokenExpiresAt; this.username = tokenDecoded["usn"]; this.user_id = tokenDecoded["uid"]; this.vars = tokenDecoded["vrs"]; } static restore(token, refreshToken) { return new Session(token, refreshToken, false); } }; // ../../node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (i = 0; i < chars.length; i++) { lookup[chars.charCodeAt(i)] = i; } var i; var encode2 = function (arraybuffer) { var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = ""; for (i = 0; i < len; i += 3) { base64 += chars[bytes[i] >> 2]; base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; base64 += chars[bytes[i + 2] & 63]; } if (len % 3 === 2) { base64 = base64.substring(0, base64.length - 1) + "="; } else if (len % 3 === 1) { base64 = base64.substring(0, base64.length - 2) + "=="; } return base64; }; var decode3 = function (base64) { var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4; if (base64[base64.length - 1] === "=") { bufferLength--; if (base64[base64.length - 2] === "=") { bufferLength--; } } var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer); for (i = 0; i < len; i += 4) { encoded1 = lookup[base64.charCodeAt(i)]; encoded2 = lookup[base64.charCodeAt(i + 1)]; encoded3 = lookup[base64.charCodeAt(i + 2)]; encoded4 = lookup[base64.charCodeAt(i + 3)]; bytes[p++] = encoded1 << 2 | encoded2 >> 4; bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; } return arraybuffer; }; // web_socket_adapter.ts var WebSocketAdapterText = class { get onClose() { return this._socket.onclose; } set onClose(value) { this._socket.onclose = value; } get onError() { return this._socket.onerror; } set onError(value) { this._socket.onerror = value; } get onMessage() { return this._socket.onmessage; } set onMessage(value) { if (value) { this._socket.onmessage = (evt) => { const message = JSON.parse(evt.data); if (message.match_data && message.match_data.data) { message.match_data.data = new Uint8Array(decode3(message.match_data.data)); } else if (message.party_data && message.party_data.data) { message.party_data.data = new Uint8Array(decode3(message.party_data.data)); } value(message); }; } else { value = null; } } get onOpen() { return this._socket.onopen; } set onOpen(value) { this._socket.onopen = value; } isOpen() { var _a; return ((_a = this._socket) == null ? void 0 : _a.readyState) == WebSocket.OPEN; } connect(scheme, host, port, createStatus, token) { const url = `${scheme}${host}:${port}/ws?lang=en&status=${encodeURIComponent(createStatus.toString())}&token=${encodeURIComponent(token)}`; this._socket = new WebSocket(url); } close() { this._socket.close(); this._socket = void 0; } send(msg) { if (msg.match_data_send) { msg.match_data_send.op_code = msg.match_data_send.op_code.toString(); let payload = msg.match_data_send.data; if (payload && payload instanceof Uint8Array) { msg.match_data_send.data = encode2(payload.buffer); } else if (payload) { msg.match_data_send.data = _btoa(payload); } } else if (msg.party_data_send) { msg.party_data_send.op_code = msg.party_data_send.op_code.toString(); let payload = msg.party_data_send.data; if (payload && payload instanceof Uint8Array) { msg.party_data_send.data = encode2(payload.buffer); } else if (payload) { msg.party_data_send.data = _btoa(payload); } } this._socket.send(JSON.stringify(msg)); } }; // socket.ts var _DefaultSocket = class { constructor(host, port, useSSL = false, verbose = false, adapter = new WebSocketAdapterText(), sendTimeoutMs = _DefaultSocket.DefaultSendTimeoutMs) { this.host = host; this.port = port; this.useSSL = useSSL; this.verbose = verbose; this.adapter = adapter; this.sendTimeoutMs = sendTimeoutMs; this.cIds = {}; this.nextCid = 1; this._heartbeatTimeoutMs = _DefaultSocket.DefaultHeartbeatTimeoutMs; } generatecid() { const cid = this.nextCid.toString(); ++this.nextCid; return cid; } connect(session, createStatus = false, connectTimeoutMs = _DefaultSocket.DefaultConnectTimeoutMs) { if (this.adapter.isOpen()) { return Promise.resolve(session); } const scheme = this.useSSL ? "wss://" : "ws://"; this.adapter.connect(scheme, this.host, this.port, createStatus, session.token); this.adapter.onClose = (evt) => { this.ondisconnect(evt); }; this.adapter.onError = (evt) => { this.onerror(evt); }; this.adapter.onMessage = (message) => { if (this.verbose && window && window.console) { console.log("Response: %o", JSON.stringify(message)); } if (!message.cid) { if (message.notifications) { message.notifications.notifications.forEach((n) => { n.content = n.content ? JSON.parse(n.content) : void 0; this.onnotification(n); }); } else if (message.match_data) { message.match_data.op_code = parseInt(message.match_data.op_code); this.onmatchdata(message.match_data); } else if (message.match_presence_event) { this.onmatchpresence(message.match_presence_event); } else if (message.matchmaker_ticket) { this.onmatchmakerticket(message.matchmaker_ticket); } else if (message.matchmaker_matched) { this.onmatchmakermatched(message.matchmaker_matched); } else if (message.status_presence_event) { this.onstatuspresence(message.status_presence_event); } else if (message.stream_presence_event) { this.onstreampresence(message.stream_presence_event); } else if (message.stream_data) { this.onstreamdata(message.stream_data); } else if (message.channel_message) { message.channel_message.content = JSON.parse(message.channel_message.content); this.onchannelmessage(message.channel_message); } else if (message.channel_presence_event) { this.onchannelpresence(message.channel_presence_event); } else if (message.party_data) { message.party_data.op_code = parseInt(message.party_data.op_code); this.onpartydata(message.party_data); } else if (message.party_close) { this.onpartyclose(message.party_close); } else if (message.party_join_request) { this.onpartyjoinrequest(message.party_join_request); } else if (message.party_leader) { this.onpartyleader(message.party_leader); } else if (message.party_matchmaker_ticket) { this.onpartymatchmakerticket(message.party_matchmaker_ticket); } else if (message.party_presence_event) { this.onpartypresence(message.party_presence_event); } else if (message.party) { this.onparty(message.party); } else { if (this.verbose && window && window.console) { console.log("Unrecognized message received: %o", message); } } } else { const executor = this.cIds[message.cid]; if (!executor) { if (this.verbose && window && window.console) { console.error("No promise executor for message: %o", message); } return; } delete this.cIds[message.cid]; if (message.error) { executor.reject(message.error); } else { executor.resolve(message); } } }; return new Promise((resolve, reject) => { this.adapter.onOpen = (evt) => { if (this.verbose && window && window.console) { console.log(evt); } this.pingPong(); resolve(session); }; this.adapter.onError = (evt) => { reject(evt); this.adapter.close(); }; setTimeout(() => { reject("The socket timed out when trying to connect."); }, connectTimeoutMs); }); } disconnect(fireDisconnectEvent = true) { if (this.adapter.isOpen()) { this.adapter.close(); } if (fireDisconnectEvent) { this.ondisconnect({}); } } setHeartbeatTimeoutMs(ms) { this._heartbeatTimeoutMs = ms; } getHeartbeatTimeoutMs() { return this._heartbeatTimeoutMs; } ondisconnect(evt) { if (this.verbose && window && window.console) { console.log(evt); } } onerror(evt) { if (this.verbose && window && window.console) { console.log(evt); } } onchannelmessage(channelMessage) { if (this.verbose && window && window.console) { console.log(channelMessage); } } onchannelpresence(channelPresence) { if (this.verbose && window && window.console) { console.log(channelPresence); } } onnotification(notification) { if (this.verbose && window && window.console) { console.log(notification); } } onmatchdata(matchData) { if (this.verbose && window && window.console) { console.log(matchData); } } onmatchpresence(matchPresence) { if (this.verbose && window && window.console) { console.log(matchPresence); } } onmatchmakerticket(matchmakerTicket) { if (this.verbose && window && window.console) { console.log(matchmakerTicket); } } onmatchmakermatched(matchmakerMatched) { if (this.verbose && window && window.console) { console.log(matchmakerMatched); } } onparty(party) { if (this.verbose && window && window.console) { console.log(party); } } onpartyclose(close) { if (this.verbose && window && window.console) { console.log("Party closed: " + close); } } onpartyjoinrequest(partyJoinRequest) { if (this.verbose && window && window.console) { console.log(partyJoinRequest); } } onpartydata(partyData) { if (this.verbose && window && window.console) { console.log(partyData); } } onpartyleader(partyLeader) { if (this.verbose && window && window.console) { console.log(partyLeader); } } onpartymatchmakerticket(partyMatched) { if (this.verbose && window && window.console) { console.log(partyMatched); } } onpartypresence(partyPresence) { if (this.verbose && window && window.console) { console.log(partyPresence); } } onstatuspresence(statusPresence) { if (this.verbose && window && window.console) { console.log(statusPresence); } } onstreampresence(streamPresence) { if (this.verbose && window && window.console) { console.log(streamPresence); } } onstreamdata(streamData) { if (this.verbose && window && window.console) { console.log(streamData); } } onheartbeattimeout() { if (this.verbose && window && window.console) { console.log("Heartbeat timeout."); } } send(message, sendTimeout = _DefaultSocket.DefaultSendTimeoutMs) { const untypedMessage = message; return new Promise((resolve, reject) => { if (!this.adapter.isOpen()) { reject("Socket connection has not been established yet."); } else { if (untypedMessage.match_data_send) { this.adapter.send(untypedMessage); resolve(); } else if (untypedMessage.party_data_send) { this.adapter.send(untypedMessage); resolve(); } else { if (untypedMessage.channel_message_send) { untypedMessage.channel_message_send.content = JSON.stringify(untypedMessage.channel_message_send.content); } else if (untypedMessage.channel_message_update) { untypedMessage.channel_message_update.content = JSON.stringify(untypedMessage.channel_message_update.content); } const cid = this.generatecid(); this.cIds[cid] = { resolve, reject }; setTimeout(() => { reject("The socket timed out while waiting for a response."); }, sendTimeout); untypedMessage.cid = cid; this.adapter.send(untypedMessage); } } if (this.verbose && window && window.console) { const loggedMessage = __spreadValues({}, untypedMessage); if (loggedMessage.match_data_send && loggedMessage.match_data_send.data) { loggedMessage.match_data_send.data = decode2(loggedMessage.match_data_send.data); } else if (loggedMessage.party_data_send && loggedMessage.party_data_send.data) { loggedMessage.party_data_send.data = decode2(loggedMessage.party_data_send.data); } console.log("Sent message: %o", JSON.stringify(loggedMessage)); } }); } acceptPartyMember(party_id, presence) { return this.send({ party_accept: { party_id, presence } }); } addMatchmaker(query, min_count, max_count, string_properties, numeric_properties) { return __async(this, null, function* () { const response = yield this.send({ "matchmaker_add": { min_count, max_count, query, string_properties, numeric_properties } }); return response.matchmaker_ticket; }); } addMatchmakerParty(party_id, query, min_count, max_count, string_properties, numeric_properties) { return __async(this, null, function* () { const response = yield this.send({ party_matchmaker_add: { party_id, min_count, max_count, query, string_properties, numeric_properties } }); return response.party_matchmaker_ticket; }); } closeParty(party_id) { return __async(this, null, function* () { return yield this.send({ party_close: { party_id } }); }); } createMatch(name) { return __async(this, null, function* () { const response = yield this.send({ match_create: { name } }); return response.match; }); } createParty(open, max_size) { return __async(this, null, function* () { const response = yield this.send({ party_create: { open, max_size } }); return response.party; }); } followUsers(userIds) { return __async(this, null, function* () { const response = yield this.send({ status_follow: { user_ids: userIds } }); return response.status; }); } joinChat(target, type, persistence, hidden) { return __async(this, null, function* () { const response = yield this.send( { channel_join: { target, type, persistence, hidden } } ); return response.channel; }); } joinMatch(match_id, token, metadata) { return __async(this, null, function* () { const join = { match_join: { metadata } }; if (token) { join.match_join.token = token; } else { join.match_join.match_id = match_id; } const response = yield this.send(join); return response.match; }); } joinParty(party_id) { return __async(this, null, function* () { return yield this.send({ party_join: { party_id } }); }); } leaveChat(channel_id) { return this.send({ channel_leave: { channel_id } }); } leaveMatch(matchId) { return this.send({ match_leave: { match_id: matchId } }); } leaveParty(party_id) { return this.send({ party_leave: { party_id } }); } listPartyJoinRequests(party_id) { return __async(this, null, function* () { const response = yield this.send({ party_join_request_list: { party_id } }); return response.party_join_request; }); } promotePartyMember(party_id, party_member) { return __async(this, null, function* () { const response = yield this.send({ party_promote: { party_id, presence: party_member } }); return response.party_leader; }); } removeChatMessage(channel_id, message_id) { return __async(this, null, function* () { const response = yield this.send( { channel_message_remove: { channel_id, message_id } } ); return response.channel_message_ack; }); } removeMatchmaker(ticket) { return this.send({ matchmaker_remove: { ticket } }); } removeMatchmakerParty(party_id, ticket) { return this.send( { party_matchmaker_remove: { party_id, ticket } } ); } removePartyMember(party_id, member) { return __async(this, null, function* () { return this.send({ party_remove: { party_id, presence: member } }); }); } rpc(id, payload, http_key) { return __async(this, null, function* () { const response = yield this.send( { rpc: { id, payload, http_key } } ); return response.rpc; }); } sendMatchState(matchId, opCode, data, presences, reliable) { return __async(this, null, function* () { return this.send( { match_data_send: { match_id: matchId, op_code: opCode, data, presences: presences != null ? presences : [], reliable } } ); }); } sendPartyData(party_id, op_code, data) { return this.send({ party_data_send: { party_id, op_code, data } }); } unfollowUsers(user_ids) { return this.send({ status_unfollow: { user_ids } }); } updateChatMessage(channel_id, message_id, content) { return __async(this, null, function* () { const response = yield this.send({ channel_message_update: { channel_id, message_id, content } }); return response.channel_message_ack; }); } updateStatus(status) { return this.send({ status_update: { status } }); } writeChatMessage(channel_id, content) { return __async(this, null, function* () { const response = yield this.send({ channel_message_send: { channel_id, content } }); return response.channel_message_ack; }); } pingPong() { return __async(this, null, function* () { if (!this.adapter.isOpen()) { return; } try { yield this.send({ ping: {} }, this._heartbeatTimeoutMs); } catch (e) { if (this.adapter.isOpen()) { if (window && window.console) { console.error("Server unreachable from heartbeat."); } this.onheartbeattimeout(); this.adapter.close(); } return; } setTimeout(() => this.pingPong(), this._heartbeatTimeoutMs); }); } }; var DefaultSocket = _DefaultSocket; DefaultSocket.DefaultHeartbeatTimeoutMs = 1e4; DefaultSocket.DefaultSendTimeoutMs = 1e4; DefaultSocket.DefaultConnectTimeoutMs = 3e4; // client.ts var DEFAULT_HOST = "127.0.0.1"; var DEFAULT_PORT = "7350"; var DEFAULT_SERVER_KEY = "defaultkey"; var DEFAULT_TIMEOUT_MS = 7e3; var DEFAULT_EXPIRED_TIMESPAN_MS = 5 * 60 * 1e3; var Client = class { constructor(serverkey = DEFAULT_SERVER_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = false, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) { this.serverkey = serverkey; this.host = host; this.port = port; this.useSSL = useSSL; this.timeout = timeout; this.autoRefreshSession = autoRefreshSession; /** The expired timespan used to check session lifetime. */ this.expiredTimespanMs = DEFAULT_EXPIRED_TIMESPAN_MS; const scheme = useSSL ? "https://" : "http://"; const portSuffix = ((useSSL && (port === '443' || port === 443)) || (!useSSL && (port === '80' || port === 80))) ? "" : `:${port}`; const basePath = `${scheme}${host}${portSuffix}`; this.apiClient = new NakamaApi(serverkey, basePath, timeout); } /** Add users to a group, or accept their join requests. */ addGroupUsers(session, groupId, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.addGroupUsers(session.token, groupId, ids).then((response) => { return response !== void 0; }); }); } /** Add friends by ID or username to a user's account. */ addFriends(session, ids, usernames) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.addFriends(session.token, ids, usernames).then((response) => { return response !== void 0; }); }); } /** Authenticate a user with an Apple ID against the server. */ authenticateApple(_0, _1, _2) { return __async(this, arguments, function* (token, create, username, vars = {}, options = {}) { const request = { "token": token, "vars": vars }; return this.apiClient.authenticateApple(this.serverkey, "", request, create, username, options).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); }); } /** Authenticate a user with a custom id against the server. */ authenticateCustom(id, create, username, vars = {}, options = {}) { const request = { "id": id, "vars": vars }; return this.apiClient.authenticateCustom(this.serverkey, "", request, create, username, options).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); } /** Authenticate a user with a device id against the server. */ authenticateDevice(id, create, username, vars) { const request = { "id": id, "vars": vars }; return this.apiClient.authenticateDevice(this.serverkey, "", request, create, username).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); } /** Authenticate a user with an email+password against the server. */ authenticateEmail(email, password, create, username, vars) { const request = { "email": email, "password": password, "vars": vars }; return this.apiClient.authenticateEmail(this.serverkey, "", request, create, username).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); } /** Authenticate a user with a Facebook Instant Game token against the server. */ authenticateFacebookInstantGame(signedPlayerInfo, create, username, vars, options = {}) { const request = { "signed_player_info": signedPlayerInfo, "vars": vars }; return this.apiClient.authenticateFacebookInstantGame( this.serverkey, "", { signed_player_info: request.signed_player_info, vars: request.vars }, create, username, options ).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); } /** Authenticate a user with a Facebook OAuth token against the server. */ authenticateFacebook(token, create, username, sync, vars, options = {}) { const request = { "token": token, "vars": vars }; return this.apiClient.authenticateFacebook(this.serverkey, "", request, create, username, sync, options).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); } /** Authenticate a user with Google against the server. */ authenticateGoogle(_0, _1, _2, _3) { return __async(this, arguments, function* (token, create, username, vars, options = {}) { const request = { token, vars }; const apiSession = yield this.apiClient.authenticateGoogle( this.serverkey, "", request, create, username, options ); return new Session( apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false ); }); } /** Authenticate a user with GameCenter against the server. */ authenticateGameCenter(_0, _1, _2, _3, _4, _5, _6, _7, _8) { return __async(this, arguments, function* (bundleId, playerId, publicKeyUrl, salt, signature, timestamp, username, create, vars, options = {}) { const request = { bundle_id: bundleId, player_id: playerId, public_key_url: publicKeyUrl, salt, signature, timestamp_seconds: timestamp, vars }; const apiSession = yield this.apiClient.authenticateGameCenter( this.serverkey, "", request, create, username, options ); return new Session( apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false ); }); } /** Authenticate a user with Steam against the server. */ authenticateSteam(token, create, username, sync, vars) { return __async(this, null, function* () { const request = { "token": token, "vars": vars, "sync": sync }; return this.apiClient.authenticateSteam(this.serverkey, "", request, create, username).then((apiSession) => { return new Session(apiSession.token || "", apiSession.refresh_token || "", apiSession.created || false); }); }); } /** Ban users from a group. */ banGroupUsers(session, groupId, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.banGroupUsers(session.token, groupId, ids).then((response) => { return response !== void 0; }); }); } /** Block one or more users by ID or username. */ blockFriends(session, ids, usernames) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.blockFriends(session.token, ids, usernames).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Create a new group with the current user as the creator and superadmin. */ createGroup(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.createGroup(session.token, request).then((response) => { return Promise.resolve({ avatar_url: response.avatar_url, create_time: response.create_time, creator_id: response.creator_id, description: response.description, edge_count: response.edge_count ? Number(response.edge_count) : 0, id: response.id, lang_tag: response.lang_tag, max_count: response.max_count ? Number(response.max_count) : 0, metadata: response.metadata ? JSON.parse(response.metadata) : void 0, name: response.name, open: response.open, update_time: response.update_time }); }); }); } /** A socket created with the client's configuration. */ createSocket(useSSL = false, verbose = false, adapter = new WebSocketAdapterText(), sendTimeoutMs = DefaultSocket.DefaultSendTimeoutMs) { return new DefaultSocket(this.host, this.port, useSSL, verbose, adapter, sendTimeoutMs); } /** Delete the current user's account. */ deleteAccount(session) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.deleteAccount(session.token).then((response) => { return response !== void 0; }); }); } /** Delete one or more users by ID or username. */ deleteFriends(session, ids, usernames) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.deleteFriends(session.token, ids, usernames).then((response) => { return response !== void 0; }); }); } /** Delete a group the user is part of and has permissions to delete. */ deleteGroup(session, groupId) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.deleteGroup(session.token, groupId).then((response) => { return response !== void 0; }); }); } /** Delete one or more notifications */ deleteNotifications(session, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.deleteNotifications(session.token, ids).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Delete one or more storage objects */ deleteStorageObjects(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.deleteStorageObjects(session.token, request).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Delete a tournament record. */ deleteTournamentRecord(session, tournamentId) { return __async(this, null, function* () { return this.apiClient.deleteTournamentRecord(session.token, tournamentId); }); } /** Demote a set of users in a group to the next role down. */ demoteGroupUsers(session, groupId, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.demoteGroupUsers(session.token, groupId, ids).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Submit an event for processing in the server's registered runtime custom events handler. */ emitEvent(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.event(session.token, request).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Fetch the current user's account. */ getAccount(session) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.getAccount(session.token); }); } /** Get subscription by product id. */ getSubscription(session, productId) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.getSubscription(session.token, productId); }); } /** Import Facebook friends and add them to a user's account. */ importFacebookFriends(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.importFacebookFriends(session.token, request).then((response) => { return response !== void 0; }); }); } /** Import Steam friends and add them to a user's account. */ importSteamFriends(session, request, reset) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.importSteamFriends(session.token, request, reset).then((response) => { return response !== void 0; }); }); } /** Fetch zero or more users by ID and/or username. */ getUsers(session, ids, usernames, facebookIds) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.getUsers(session.token, ids, usernames, facebookIds).then((response) => { var result = { users: [] }; if (response.users == null) { return Promise.resolve(result); } response.users.forEach((u) => { result.users.push({ avatar_url: u.avatar_url, create_time: u.create_time, display_name: u.display_name, edge_count: u.edge_count ? Number(u.edge_count) : 0, facebook_id: u.facebook_id, gamecenter_id: u.gamecenter_id, google_id: u.google_id, id: u.id, lang_tag: u.lang_tag, location: u.location, online: u.online, steam_id: u.steam_id, timezone: u.timezone, update_time: u.update_time, username: u.username, metadata: u.metadata ? JSON.parse(u.metadata) : void 0 }); }); return Promise.resolve(result); }); }); } /** Join a group that's open, or send a request to join a group that is closed. */ joinGroup(session, groupId) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.joinGroup(session.token, groupId, {}).then((response) => { return response !== void 0; }); }); } joinTournament(session, tournamentId) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.joinTournament(session.token, tournamentId, {}).then((response) => { return response !== void 0; }); }); } /** Kick users from a group, or decline their join requests. */ kickGroupUsers(session, groupId, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.kickGroupUsers(session.token, groupId, ids).then((response) => { return Promise.resolve(response != void 0); }); }); } /** Leave a group the user is part of. */ leaveGroup(session, groupId) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.leaveGroup(session.token, groupId, {}).then((response) => { return response !== void 0; }); }); } /** List a channel's message history. */ listChannelMessages(session, channelId, limit, forward, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listChannelMessages(session.token, channelId, limit, forward, cursor).then((response) => { var result = { messages: [], next_cursor: response.next_cursor, prev_cursor: response.prev_cursor, cacheable_cursor: response.cacheable_cursor }; if (response.messages == null) { return Promise.resolve(result); } response.messages.forEach((m) => { result.messages.push({ channel_id: m.channel_id, code: m.code ? Number(m.code) : 0, create_time: m.create_time, message_id: m.message_id, persistent: m.persistent, sender_id: m.sender_id, update_time: m.update_time, username: m.username, content: m.content ? JSON.parse(m.content) : void 0, group_id: m.group_id, room_name: m.room_name, user_id_one: m.user_id_one, user_id_two: m.user_id_two }); }); return Promise.resolve(result); }); }); } /** List a group's users. */ listGroupUsers(session, groupId, state, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listGroupUsers(session.token, groupId, limit, state, cursor).then((response) => { var result = { group_users: [], cursor: response.cursor }; if (response.group_users == null) { return Promise.resolve(result); } response.group_users.forEach((gu) => { result.group_users.push({ user: { avatar_url: gu.user.avatar_url, create_time: gu.user.create_time, display_name: gu.user.display_name, edge_count: gu.user.edge_count ? Number(gu.user.edge_count) : 0, facebook_id: gu.user.facebook_id, gamecenter_id: gu.user.gamecenter_id, google_id: gu.user.google_id, id: gu.user.id, lang_tag: gu.user.lang_tag, location: gu.user.location, online: gu.user.online, steam_id: gu.user.steam_id, timezone: gu.user.timezone, update_time: gu.user.update_time, username: gu.user.username, metadata: gu.user.metadata ? JSON.parse(gu.user.metadata) : void 0 }, state: gu.state ? Number(gu.state) : 0 }); }); return Promise.resolve(result); }); }); } /** List a user's groups. */ listUserGroups(session, userId, state, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listUserGroups(session.token, userId, state, limit, cursor).then((response) => { var result = { user_groups: [], cursor: response.cursor }; if (response.user_groups == null) { return Promise.resolve(result); } response.user_groups.forEach((ug) => { result.user_groups.push({ group: { avatar_url: ug.group.avatar_url, create_time: ug.group.create_time, creator_id: ug.group.creator_id, description: ug.group.description, edge_count: ug.group.edge_count ? Number(ug.group.edge_count) : 0, id: ug.group.id, lang_tag: ug.group.lang_tag, max_count: ug.group.max_count, metadata: ug.group.metadata ? JSON.parse(ug.group.metadata) : void 0, name: ug.group.name, open: ug.group.open, update_time: ug.group.update_time }, state: ug.state ? Number(ug.state) : 0 }); }); return Promise.resolve(result); }); }); } /** List groups based on given filters. */ listGroups(session, name, cursor, limit) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listGroups(session.token, name, cursor, limit).then((response) => { var result = { groups: [] }; if (response.groups == null) { return Promise.resolve(result); } result.cursor = response.cursor; response.groups.forEach((ug) => { result.groups.push({ avatar_url: ug.avatar_url, create_time: ug.create_time, creator_id: ug.creator_id, description: ug.description, edge_count: ug.edge_count ? Number(ug.edge_count) : 0, id: ug.id, lang_tag: ug.lang_tag, max_count: ug.max_count, metadata: ug.metadata ? JSON.parse(ug.metadata) : void 0, name: ug.name, open: ug.open, update_time: ug.update_time }); }); return Promise.resolve(result); }); }); } /** Add an Apple ID to the social profiles on the current user's account. */ linkApple(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkApple(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add a custom ID to the social profiles on the current user's account. */ linkCustom(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkCustom(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add a device ID to the social profiles on the current user's account. */ linkDevice(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkDevice(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add an email+password to the social profiles on the current user's account. */ linkEmail(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkEmail(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add Facebook to the social profiles on the current user's account. */ linkFacebook(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkFacebook(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add Facebook Instant to the social profiles on the current user's account. */ linkFacebookInstantGame(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkFacebookInstantGame(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add Google to the social profiles on the current user's account. */ linkGoogle(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkGoogle(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add GameCenter to the social profiles on the current user's account. */ linkGameCenter(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkGameCenter(session.token, request).then((response) => { return response !== void 0; }); }); } /** Add Steam to the social profiles on the current user's account. */ linkSteam(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.linkSteam(session.token, request).then((response) => { return response !== void 0; }); }); } /** List all friends for the current user. */ listFriends(session, state, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listFriends(session.token, limit, state, cursor).then((response) => { var result = { friends: [], cursor: response.cursor }; if (response.friends == null) { return Promise.resolve(result); } response.friends.forEach((f) => { result.friends.push({ user: { avatar_url: f.user.avatar_url, create_time: f.user.create_time, display_name: f.user.display_name, edge_count: f.user.edge_count ? Number(f.user.edge_count) : 0, facebook_id: f.user.facebook_id, gamecenter_id: f.user.gamecenter_id, google_id: f.user.google_id, id: f.user.id, lang_tag: f.user.lang_tag, location: f.user.location, online: f.user.online, steam_id: f.user.steam_id, timezone: f.user.timezone, update_time: f.user.update_time, username: f.user.username, metadata: f.user.metadata ? JSON.parse(f.user.metadata) : void 0, facebook_instant_game_id: f.user.facebook_instant_game_id }, state: f.state }); }); return Promise.resolve(result); }); }); } /** List friends of friends for the current user. */ listFriendsOfFriends(session, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listFriendsOfFriends(session.token, limit, cursor).then((response) => { var result = { friends_of_friends: [], cursor: response.cursor }; if (response.friends_of_friends == null) { return Promise.resolve(result); } response.friends_of_friends.forEach((f) => { result.friends_of_friends.push({ referrer: f.referrer, user: { avatar_url: f.user.avatar_url, create_time: f.user.create_time, display_name: f.user.display_name, edge_count: f.user.edge_count ? Number(f.user.edge_count) : 0, facebook_id: f.user.facebook_id, gamecenter_id: f.user.gamecenter_id, google_id: f.user.google_id, id: f.user.id, lang_tag: f.user.lang_tag, location: f.user.location, online: f.user.online, steam_id: f.user.steam_id, timezone: f.user.timezone, update_time: f.user.update_time, username: f.user.username, metadata: f.user.metadata ? JSON.parse(f.user.metadata) : void 0, facebook_instant_game_id: f.user.facebook_instant_game_id } }); }); return Promise.resolve(result); }); }); } /** List leaderboard records */ listLeaderboardRecords(session, leaderboardId, ownerIds, limit, cursor, expiry) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listLeaderboardRecords(session.token, leaderboardId, ownerIds, limit, cursor, expiry).then((response) => { var list = { next_cursor: response.next_cursor, prev_cursor: response.prev_cursor, rank_count: response.rank_count ? Number(response.rank_count) : 0, owner_records: [], records: [] }; if (response.owner_records != null) { response.owner_records.forEach((o) => { list.owner_records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } if (response.records != null) { response.records.forEach((o) => { list.records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } return Promise.resolve(list); }); }); } listLeaderboardRecordsAroundOwner(session, leaderboardId, ownerId, limit, expiry, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listLeaderboardRecordsAroundOwner(session.token, leaderboardId, ownerId, limit, expiry, cursor).then((response) => { var list = { next_cursor: response.next_cursor, prev_cursor: response.prev_cursor, rank_count: response.rank_count ? Number(response.rank_count) : 0, owner_records: [], records: [] }; if (response.owner_records != null) { response.owner_records.forEach((o) => { list.owner_records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } if (response.records != null) { response.records.forEach((o) => { list.records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } return Promise.resolve(list); }); }); } /** Fetch list of running matches. */ listMatches(session, limit, authoritative, label, minSize, maxSize, query) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listMatches(session.token, limit, authoritative, label, minSize, maxSize, query); }); } /** Fetch list of notifications. */ listNotifications(session, limit, cacheableCursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listNotifications(session.token, limit, cacheableCursor).then((response) => { var result = { cacheable_cursor: response.cacheable_cursor, notifications: [] }; if (response.notifications == null) { return Promise.resolve(result); } response.notifications.forEach((n) => { result.notifications.push({ code: n.code ? Number(n.code) : 0, create_time: n.create_time, id: n.id, persistent: n.persistent, sender_id: n.sender_id, subject: n.subject, content: n.content ? JSON.parse(n.content) : void 0 }); }); return Promise.resolve(result); }); }); } /** List storage objects. */ listStorageObjects(session, collection, userId, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listStorageObjects(session.token, collection, userId, limit, cursor).then((response) => { var result = { objects: [], cursor: response.cursor }; if (response.objects == null) { return Promise.resolve(result); } response.objects.forEach((o) => { result.objects.push({ collection: o.collection, key: o.key, permission_read: o.permission_read ? Number(o.permission_read) : 0, permission_write: o.permission_write ? Number(o.permission_write) : 0, value: o.value ? JSON.parse(o.value) : void 0, version: o.version, user_id: o.user_id, create_time: o.create_time, update_time: o.update_time }); }); return Promise.resolve(result); }); }); } /** List current or upcoming tournaments. */ listTournaments(session, categoryStart, categoryEnd, startTime, endTime, limit, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listTournaments(session.token, categoryStart, categoryEnd, startTime, endTime, limit, cursor).then((response) => { var list = { cursor: response.cursor, tournaments: [] }; if (response.tournaments != null) { response.tournaments.forEach((o) => { list.tournaments.push({ id: o.id, title: o.title, description: o.description, duration: o.duration ? Number(o.duration) : 0, category: o.category ? Number(o.category) : 0, sort_order: o.sort_order ? Number(o.sort_order) : 0, size: o.size ? Number(o.size) : 0, max_size: o.max_size ? Number(o.max_size) : 0, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0, can_enter: o.can_enter, end_active: o.end_active ? Number(o.end_active) : 0, next_reset: o.next_reset ? Number(o.next_reset) : 0, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, create_time: o.create_time, start_time: o.start_time, end_time: o.end_time, start_active: o.start_active, authoritative: o.authoritative }); }); } return Promise.resolve(list); }); }); } /** List user subscriptions. */ listSubscriptions(session, cursor, limit) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listSubscriptions(session.token, { cursor, limit }); }); } /** List tournament records from a given tournament. */ listTournamentRecords(session, tournamentId, ownerIds, limit, cursor, expiry) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listTournamentRecords(session.token, tournamentId, ownerIds, limit, cursor, expiry).then((response) => { var list = { next_cursor: response.next_cursor, prev_cursor: response.prev_cursor, owner_records: [], records: [] }; if (response.owner_records != null) { response.owner_records.forEach((o) => { list.owner_records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } if (response.records != null) { response.records.forEach((o) => { list.records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } return Promise.resolve(list); }); }); } /** List tournament records from a given tournament around the owner. */ listTournamentRecordsAroundOwner(session, tournamentId, ownerId, limit, expiry, cursor) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.listTournamentRecordsAroundOwner(session.token, tournamentId, ownerId, limit, expiry, cursor).then((response) => { var list = { next_cursor: response.next_cursor, prev_cursor: response.prev_cursor, owner_records: [], records: [] }; if (response.owner_records != null) { response.owner_records.forEach((o) => { list.owner_records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } if (response.records != null) { response.records.forEach((o) => { list.records.push({ expiry_time: o.expiry_time, leaderboard_id: o.leaderboard_id, metadata: o.metadata ? JSON.parse(o.metadata) : void 0, num_score: o.num_score ? Number(o.num_score) : 0, owner_id: o.owner_id, rank: o.rank ? Number(o.rank) : 0, score: o.score ? Number(o.score) : 0, subscore: o.subscore ? Number(o.subscore) : 0, update_time: o.update_time, username: o.username, max_num_score: o.max_num_score ? Number(o.max_num_score) : 0 }); }); } return Promise.resolve(list); }); }); } /** Promote users in a group to the next role up. */ promoteGroupUsers(session, groupId, ids) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.promoteGroupUsers(session.token, groupId, ids); }); } /** Fetch storage objects. */ readStorageObjects(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.readStorageObjects(session.token, request).then((response) => { var result = { objects: [] }; if (response.objects == null) { return Promise.resolve(result); } response.objects.forEach((o) => { result.objects.push({ collection: o.collection, key: o.key, permission_read: o.permission_read ? Number(o.permission_read) : 0, permission_write: o.permission_write ? Number(o.permission_write) : 0, value: o.value ? JSON.parse(o.value) : void 0, version: o.version, user_id: o.user_id, create_time: o.create_time, update_time: o.update_time }); }); return Promise.resolve(result); }); }); } /** Execute an RPC function on the server. */ rpc(session, id, input) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.rpcFunc(session.token, id, JSON.stringify(input)).then((response) => { return Promise.resolve({ id: response.id, payload: !response.payload ? void 0 : JSON.parse(response.payload) }); }); }); } /** Execute an RPC function on the server. */ rpcHttpKey(httpKey, id, input) { return __async(this, null, function* () { return this.apiClient.rpcFunc2("", id, input && JSON.stringify(input) || "", httpKey).then((response) => { return Promise.resolve({ id: response.id, payload: !response.payload ? void 0 : JSON.parse(response.payload) }); }).catch((err) => { throw err; }); }); } /** Log out a session, invalidate a refresh token, or log out all sessions/refresh tokens for a user. */ sessionLogout(session, token, refreshToken) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.sessionLogout(session.token, { refresh_token: refreshToken, token }).then((response) => { return response !== void 0; }); }); } /** Refresh a user's session using a refresh token retrieved from a previous authentication request. */ sessionRefresh(_0) { return __async(this, arguments, function* (session, vars = {}) { if (!session) { console.error("Cannot refresh a null session."); return session; } if (session.created && session.expires_at - session.created_at < 70) { console.warn("Session lifetime too short, please set '--session.token_expiry_sec' option. See the documentation for more info: https://heroiclabs.com/docs/nakama/getting-started/configuration/#session"); } if (session.created && session.refresh_expires_at - session.created_at < 3700) { console.warn("Session refresh lifetime too short, please set '--session.refresh_token_expiry_sec' option. See the documentation for more info: https://heroiclabs.com/docs/nakama/getting-started/configuration/#session"); } const apiSession = yield this.apiClient.sessionRefresh(this.serverkey, "", { token: session.refresh_token, vars }); session.update(apiSession.token, apiSession.refresh_token); return session; }); } /** Remove the Apple ID from the social profiles on the current user's account. */ unlinkApple(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkApple(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove custom ID from the social profiles on the current user's account. */ unlinkCustom(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkCustom(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove a device ID from the social profiles on the current user's account. */ unlinkDevice(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkDevice(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove an email+password from the social profiles on the current user's account. */ unlinkEmail(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkEmail(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove Facebook from the social profiles on the current user's account. */ unlinkFacebook(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkFacebook(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove Facebook Instant social profiles from the current user's account. */ unlinkFacebookInstantGame(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkFacebookInstantGame(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove Google from the social profiles on the current user's account. */ unlinkGoogle(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkGoogle(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove GameCenter from the social profiles on the current user's account. */ unlinkGameCenter(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkGameCenter(session.token, request).then((response) => { return response !== void 0; }); }); } /** Remove Steam from the social profiles on the current user's account. */ unlinkSteam(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.unlinkSteam(session.token, request).then((response) => { return response !== void 0; }); }); } /** Update fields in the current user's account. */ updateAccount(session, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.updateAccount(session.token, request).then((response) => { return response !== void 0; }); }); } /** Update a group the user is part of and has permissions to update. */ updateGroup(session, groupId, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.updateGroup(session.token, groupId, request).then((response) => { return response !== void 0; }); }); } /** Validate an Apple IAP receipt. */ validatePurchaseApple(session, receipt, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validatePurchaseApple(session.token, { receipt, persist }); }); } /** Validate a FB Instant IAP receipt. */ validatePurchaseFacebookInstant(session, signedRequest, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validatePurchaseFacebookInstant(session.token, { signed_request: signedRequest, persist }); }); } /** Validate a Google IAP receipt. */ validatePurchaseGoogle(session, purchase, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validatePurchaseGoogle(session.token, { purchase, persist }); }); } /** Validate a Huawei IAP receipt. */ validatePurchaseHuawei(session, purchase, signature, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validatePurchaseHuawei(session.token, { purchase, signature, persist }); }); } /** Validate Apple Subscription Receipt */ validateSubscriptionApple(session, receipt, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validateSubscriptionApple(session.token, { receipt, persist }); }); } /** Validate Google Subscription Receipt */ validateSubscriptionGoogle(session, receipt, persist = true) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.validateSubscriptionGoogle(session.token, { receipt, persist }); }); } /** Write a record to a leaderboard. */ writeLeaderboardRecord(session, leaderboardId, request) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } return this.apiClient.writeLeaderboardRecord(session.token, leaderboardId, { metadata: request.metadata ? JSON.stringify(request.metadata) : void 0, score: request.score, subscore: request.subscore }).then((response) => { return Promise.resolve({ expiry_time: response.expiry_time, leaderboard_id: response.leaderboard_id, metadata: response.metadata ? JSON.parse(response.metadata) : void 0, num_score: response.num_score ? Number(response.num_score) : 0, owner_id: response.owner_id, score: response.score ? Number(response.score) : 0, subscore: response.subscore ? Number(response.subscore) : 0, update_time: response.update_time, username: response.username, max_num_score: response.max_num_score ? Number(response.max_num_score) : 0, rank: response.rank ? Number(response.rank) : 0 }); }); }); } /** Write storage objects. */ writeStorageObjects(session, objects) { return __async(this, null, function* () { if (this.autoRefreshSession && session.refresh_token && session.isexpired((Date.now() + this.expiredTimespanMs) / 1e3)) { yield this.sessionRefresh(session); } var request = { objects: [] }; objects.forEach((o) => { request.objects.push({ collection: o.collection, key: o.key, permission_read: o.permission_read, permission_write: o.permission_write, value: JSON.stringify(o.value), version: o.version }); }); return this.apiClient.writeStorageObjects(session.token, request); }); } /** Write a record to a tournament. */ writeTournamentRecord(session, tournamentId, request) { return __async(this, null, function* () { return this.apiClient.writeTournamentRecord(session.token, tournamentId, { metadata: request.metadata ? JSON.stringify(request.metadata) : void 0, score: request.score, subscore: request.subscore }).then((response) => { return Promise.resolve({ expiry_time: response.expiry_time, leaderboard_id: response.leaderboard_id, metadata: response.metadata ? JSON.parse(response.metadata) : void 0, num_score: response.num_score ? Number(response.num_score) : 0, owner_id: response.owner_id, score: response.score ? Number(response.score) : 0, subscore: response.subscore ? Number(response.subscore) : 0, update_time: response.update_time, username: response.username, max_num_score: response.max_num_score ? Number(response.max_num_score) : 0, rank: response.rank ? Number(response.rank) : 0 }); }); }); } }; export { Client, DefaultSocket, Session, WebSocketAdapterText };