From 634a5bd7371fc913ad10453dff0059548f1bc421 Mon Sep 17 00:00:00 2001 From: meew0 Date: Sat, 30 Jan 2016 14:17:27 +0100 Subject: [PATCH] Fix the webdists, this fixes #170. Particular problems and how they were resolved: - The `fs-extra` module, used exclusively by TokenCacher, didn't have a browser version. I rewrote TokenCacher to not use fs-extra (see fdd4cfc7cca6a355946977e83c4baa4acb355a57) - TokenCacher wouldn't work in the browser anyway due to lack of a file system. I made a shim (`Util/TokenCacher-shim.js`) that implements all TokenCacher functionality as null implementations, this causes `login` to always make a request. - Compressed packets couldn't be parsed because neither node's Buffers nor zlib were working correctly. Initially I tried to make a browser-only parser class that parses compressed `Blob` packets, but this didn't work out, so I just disabled compression by default. --- lib/Client/Client.js | 2 +- lib/Util/TokenCacher-shim.js | 29 +++++++++++++++++++++++++++++ package.json | 4 ++++ src/Client/Client.js | 2 +- src/Util/TokenCacher-shim.js | 19 +++++++++++++++++++ 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 lib/Util/TokenCacher-shim.js create mode 100644 src/Util/TokenCacher-shim.js diff --git a/lib/Client/Client.js b/lib/Client/Client.js index c5919ff70..c7981517c 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -57,7 +57,7 @@ var Client = (function (_EventEmitter) { _EventEmitter.call(this); this.options = options || {}; - this.options.compress = options.compress || true; + this.options.compress = options.compress || !process.browser; this.options.revive = options.revive || false; this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.internal = new _InternalClient2["default"](this); diff --git a/lib/Util/TokenCacher-shim.js b/lib/Util/TokenCacher-shim.js new file mode 100644 index 000000000..f483e9575 --- /dev/null +++ b/lib/Util/TokenCacher-shim.js @@ -0,0 +1,29 @@ +// Shim for the token cacher in the browser. +"use strict"; + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var TokenCacher = (function () { + function TokenCacher() { + _classCallCheck(this, TokenCacher); + } + + TokenCacher.prototype.setToken = function setToken() {}; + + TokenCacher.prototype.save = function save() {}; + + TokenCacher.prototype.getToken = function getToken() { + return null; + }; + + TokenCacher.prototype.init = function init(ind) { + this.done = true; + }; + + return TokenCacher; +})(); + +exports["default"] = TokenCacher; +module.exports = exports["default"]; diff --git a/package.json b/package.json index 3d656adbe..93edbaaed 100644 --- a/package.json +++ b/package.json @@ -44,5 +44,9 @@ }, "engines": { "node": ">=0.12.7" + }, + "browser": { + "./src/Util/TokenCacher.js": "./src/Util/TokenCacher-shim.js", + "./lib/Util/TokenCacher.js": "./lib/Util/TokenCacher-shim.js" } } diff --git a/src/Client/Client.js b/src/Client/Client.js index 321c552d6..b9f4ff5eb 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -32,7 +32,7 @@ export default class Client extends EventEmitter { constructor(options = {}) { super(); this.options = options || {}; - this.options.compress = options.compress || true; + this.options.compress = options.compress || (!process.browser); this.options.revive = options.revive || false; this.options.rate_limit_as_error = options.rate_limit_as_error || false; this.internal = new InternalClient(this); diff --git a/src/Util/TokenCacher-shim.js b/src/Util/TokenCacher-shim.js new file mode 100644 index 000000000..e9fb42058 --- /dev/null +++ b/src/Util/TokenCacher-shim.js @@ -0,0 +1,19 @@ +// Shim for the token cacher in the browser. +export default class TokenCacher { + constructor() { + } + + setToken() { + } + + save() { + } + + getToken() { + return null; + } + + init(ind) { + this.done = true; + } +}