diff --git a/ghu.js b/ghu.js index 6e78c76e..57bcaa41 100644 --- a/ghu.js +++ b/ghu.js @@ -20,6 +20,10 @@ const webpackCfg = include => ({ cacheDirectory: true, presets: ['es2015'] } + }, + { + test: /jsdom/, + loader: 'null-loader' } ] } diff --git a/package.json b/package.json index fc31f9e5..d5af46ab 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,12 @@ "babel-preset-es2015": "6.9.0", "eslint": "3.1.1", "ghu": "0.7.0", + "jsdom": "9.4.1", "kjua": "0.1.1", "lolight": "0.3.0", "marked": "0.3.5", "normalize.css": "4.2.0", + "null-loader": "0.1.1", "scar": "0.14.0" }, "engines": { diff --git a/src/_h5ai/public/js/lib/core/location.js b/src/_h5ai/public/js/lib/core/location.js index 6750f189..4cc7e8fd 100644 --- a/src/_h5ai/public/js/lib/core/location.js +++ b/src/_h5ai/public/js/lib/core/location.js @@ -1,11 +1,10 @@ const {each, values, difference} = require('../util'); -const {win} = require('../globals'); const {request} = require('../server'); const allsettings = require('./settings'); const event = require('./event'); const notification = require('../view/notification'); - +const win = global.window; const doc = win.document; const settings = Object.assign({ fastBrowsing: true, diff --git a/src/_h5ai/public/js/lib/core/store.js b/src/_h5ai/public/js/lib/core/store.js index 6cfbf52b..92d95930 100644 --- a/src/_h5ai/public/js/lib/core/store.js +++ b/src/_h5ai/public/js/lib/core/store.js @@ -1,6 +1,4 @@ -const {win} = require('../globals'); - -const store = win.localStorage; +const store = global.window.localStorage; const storekey = '_h5ai'; diff --git a/src/_h5ai/public/js/lib/ext/autorefresh.js b/src/_h5ai/public/js/lib/ext/autorefresh.js index 719533e4..81a3c8cc 100644 --- a/src/_h5ai/public/js/lib/ext/autorefresh.js +++ b/src/_h5ai/public/js/lib/ext/autorefresh.js @@ -1,8 +1,8 @@ -const {win} = require('../globals'); const event = require('../core/event'); const location = require('../core/location'); const allsettings = require('../core/settings'); +const win = global.window; const settings = Object.assign({ enabled: false, interval: 5000 diff --git a/src/_h5ai/public/js/lib/ext/google-analytics.js b/src/_h5ai/public/js/lib/ext/google-analytics.js index ac0b453d..d6be8bf3 100644 --- a/src/_h5ai/public/js/lib/ext/google-analytics.js +++ b/src/_h5ai/public/js/lib/ext/google-analytics.js @@ -1,9 +1,8 @@ const {map} = require('../util'); -const {win} = require('../globals'); const event = require('../core/event'); const allsettings = require('../core/settings'); - +const win = global.window; const settings = Object.assign({ enabled: false, id: 'UA-000000-0' diff --git a/src/_h5ai/public/js/lib/ext/info.js b/src/_h5ai/public/js/lib/ext/info.js index 20d911ee..14dfc299 100644 --- a/src/_h5ai/public/js/lib/ext/info.js +++ b/src/_h5ai/public/js/lib/ext/info.js @@ -1,6 +1,5 @@ const kjua = require('kjua'); const {isNum, dom} = require('../util'); -const {win} = require('../globals'); const event = require('../core/event'); const format = require('../core/format'); const resource = require('../core/resource'); @@ -96,7 +95,7 @@ const update = item => { } if (settings.qrcode) { - const loc = win.location; + const loc = global.window.location; $qrcode.clr().app(kjua({ render: 'image', size: 200, diff --git a/src/_h5ai/public/js/lib/ext/l10n.js b/src/_h5ai/public/js/lib/ext/l10n.js index c8954d7f..f7e4b906 100644 --- a/src/_h5ai/public/js/lib/ext/l10n.js +++ b/src/_h5ai/public/js/lib/ext/l10n.js @@ -1,5 +1,4 @@ const {each, isStr, dom} = require('../util'); -const {win} = require('../globals'); const server = require('../server'); const event = require('../core/event'); const format = require('../core/format'); @@ -7,6 +6,7 @@ const langs = require('../core/langs'); const allsettings = require('../core/settings'); const store = require('../core/store'); +const win = global.window; const settings = Object.assign({ enabled: false, lang: 'en', diff --git a/src/_h5ai/public/js/lib/ext/piwik-analytics.js b/src/_h5ai/public/js/lib/ext/piwik-analytics.js index 54e74c04..6c8a34fe 100644 --- a/src/_h5ai/public/js/lib/ext/piwik-analytics.js +++ b/src/_h5ai/public/js/lib/ext/piwik-analytics.js @@ -1,9 +1,8 @@ const {dom, onLoad} = require('../util'); -const {win} = require('../globals'); const event = require('../core/event'); const allsettings = require('../core/settings'); - +const win = global.window; const settings = Object.assign({ enabled: false, baseURL: 'not-set', diff --git a/src/_h5ai/public/js/lib/ext/preview/preview-txt.js b/src/_h5ai/public/js/lib/ext/preview/preview-txt.js index 37c94eac..b238da1f 100644 --- a/src/_h5ai/public/js/lib/ext/preview/preview-txt.js +++ b/src/_h5ai/public/js/lib/ext/preview/preview-txt.js @@ -1,10 +1,10 @@ const lolight = require('lolight'); const marked = require('marked'); const {keys, dom} = require('../../util'); -const {win} = require('../../globals'); const allsettings = require('../../core/settings'); const preview = require('./preview'); +const win = global.window; const XHR = win.XMLHttpRequest; const settings = Object.assign({ enabled: false, diff --git a/src/_h5ai/public/js/lib/ext/preview/preview.js b/src/_h5ai/public/js/lib/ext/preview/preview.js index 5146d484..c1251c90 100644 --- a/src/_h5ai/public/js/lib/ext/preview/preview.js +++ b/src/_h5ai/public/js/lib/ext/preview/preview.js @@ -1,10 +1,10 @@ const {each, isFn, isNum, dom, includes, compact} = require('../../util'); -const {win} = require('../../globals'); const event = require('../../core/event'); const resource = require('../../core/resource'); const allsettings = require('../../core/settings'); const store = require('../../core/store'); +const win = global.window; const settings = Object.assign({ enabled: true }, allsettings.preview); diff --git a/src/_h5ai/public/js/lib/ext/select.js b/src/_h5ai/public/js/lib/ext/select.js index 525d3569..02d16097 100644 --- a/src/_h5ai/public/js/lib/ext/select.js +++ b/src/_h5ai/public/js/lib/ext/select.js @@ -1,11 +1,9 @@ const {each, dom} = require('../util'); -const {win} = require('../globals'); const event = require('../core/event'); const resource = require('../core/resource'); const allsettings = require('../core/settings'); - -const doc = win.document; +const doc = global.window.document; const settings = Object.assign({ enabled: false, clickndrag: false, diff --git a/src/_h5ai/public/js/lib/ext/title.js b/src/_h5ai/public/js/lib/ext/title.js index 07d2aa32..f2d1b33e 100644 --- a/src/_h5ai/public/js/lib/ext/title.js +++ b/src/_h5ai/public/js/lib/ext/title.js @@ -1,9 +1,7 @@ -const {win} = require('../globals'); const event = require('../core/event'); const allsettings = require('../core/settings'); - -const doc = win.document; +const doc = global.window.document; const settings = Object.assign({ enabled: false }, allsettings.title); diff --git a/src/_h5ai/public/js/lib/globals.js b/src/_h5ai/public/js/lib/globals.js deleted file mode 100644 index 13f020d5..00000000 --- a/src/_h5ai/public/js/lib/globals.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - win: global.window -}; diff --git a/src/_h5ai/public/js/lib/main/index.js b/src/_h5ai/public/js/lib/main/index.js index e3864749..186b4f45 100644 --- a/src/_h5ai/public/js/lib/main/index.js +++ b/src/_h5ai/public/js/lib/main/index.js @@ -1,4 +1,3 @@ -const {win} = require('../globals'); const location = require('../core/location'); require('../view/viewmode'); @@ -20,4 +19,4 @@ require('../ext/thumbnails'); require('../ext/title'); require('../ext/tree'); -location.setLocation(win.document.location.href, true); +location.setLocation(global.window.document.location.href, true); diff --git a/src/_h5ai/public/js/lib/main/info.js b/src/_h5ai/public/js/lib/main/info.js index a98f07c1..4ecc11b8 100644 --- a/src/_h5ai/public/js/lib/main/info.js +++ b/src/_h5ai/public/js/lib/main/info.js @@ -1,5 +1,4 @@ const {dom} = require('../util'); -const {win} = require('../globals'); const config = require('../config'); const server = require('../server'); const resource = require('../core/resource'); @@ -135,7 +134,7 @@ const addTests = () => { }; const reload = () => { - win.location.reload(); + global.window.location.reload(); }; const onLogin = () => { diff --git a/src/_h5ai/public/js/lib/server.js b/src/_h5ai/public/js/lib/server.js index 7071ce31..e726ab45 100644 --- a/src/_h5ai/public/js/lib/server.js +++ b/src/_h5ai/public/js/lib/server.js @@ -1,6 +1,5 @@ const {each, dom} = require('./util'); -const {win} = require('./globals'); -const XHR = win.XMLHttpRequest; +const XHR = global.window.XMLHttpRequest; const request = data => { return new Promise(resolve => { diff --git a/src/_h5ai/public/js/lib/util/dom.js b/src/_h5ai/public/js/lib/util/dom.js index 51f08590..37fdd0b3 100644 --- a/src/_h5ai/public/js/lib/util/dom.js +++ b/src/_h5ai/public/js/lib/util/dom.js @@ -1,6 +1,6 @@ -const {win} = require('../globals'); const {each, filter, hasLength, is, isStr, map, isInstanceOf, toArray} = require('./lo'); +const win = global.window; const doc = win.document; const parseHtml = (() => { diff --git a/test/index.js b/test/index.js index 4de0d30f..59aa6dbd 100644 --- a/test/index.js +++ b/test/index.js @@ -1,3 +1,7 @@ +if (!global.window) { + global.window = require('jsdom').jsdom().defaultView; +} + const {test} = require('scar'); const {pinHtml} = require('./util/pin');