mirror of
https://github.com/idanoo/GoScrobble
synced 2025-07-02 06:02:19 +00:00
0.2.0 - Mid migration
This commit is contained in:
parent
139e6a915e
commit
7e38fdbd7d
42393 changed files with 5358157 additions and 62 deletions
17
web/node_modules/sockjs-client/lib/utils/browser-crypto.js
generated
vendored
Normal file
17
web/node_modules/sockjs-client/lib/utils/browser-crypto.js
generated
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
'use strict';
|
||||
|
||||
if (global.crypto && global.crypto.getRandomValues) {
|
||||
module.exports.randomBytes = function(length) {
|
||||
var bytes = new Uint8Array(length);
|
||||
global.crypto.getRandomValues(bytes);
|
||||
return bytes;
|
||||
};
|
||||
} else {
|
||||
module.exports.randomBytes = function(length) {
|
||||
var bytes = new Array(length);
|
||||
for (var i = 0; i < length; i++) {
|
||||
bytes[i] = Math.floor(Math.random() * 256);
|
||||
}
|
||||
return bytes;
|
||||
};
|
||||
}
|
27
web/node_modules/sockjs-client/lib/utils/browser.js
generated
vendored
Normal file
27
web/node_modules/sockjs-client/lib/utils/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
isOpera: function() {
|
||||
return global.navigator &&
|
||||
/opera/i.test(global.navigator.userAgent);
|
||||
}
|
||||
|
||||
, isKonqueror: function() {
|
||||
return global.navigator &&
|
||||
/konqueror/i.test(global.navigator.userAgent);
|
||||
}
|
||||
|
||||
// #187 wrap document.domain in try/catch because of WP8 from file:///
|
||||
, hasDomain: function () {
|
||||
// non-browser client always has a domain
|
||||
if (!global.document) {
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
return !!global.document.domain;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
50
web/node_modules/sockjs-client/lib/utils/escape.js
generated
vendored
Normal file
50
web/node_modules/sockjs-client/lib/utils/escape.js
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
'use strict';
|
||||
|
||||
var JSON3 = require('json3');
|
||||
|
||||
// Some extra characters that Chrome gets wrong, and substitutes with
|
||||
// something else on the wire.
|
||||
// eslint-disable-next-line no-control-regex, no-misleading-character-class
|
||||
var extraEscapable = /[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g
|
||||
, extraLookup;
|
||||
|
||||
// This may be quite slow, so let's delay until user actually uses bad
|
||||
// characters.
|
||||
var unrollLookup = function(escapable) {
|
||||
var i;
|
||||
var unrolled = {};
|
||||
var c = [];
|
||||
for (i = 0; i < 65536; i++) {
|
||||
c.push( String.fromCharCode(i) );
|
||||
}
|
||||
escapable.lastIndex = 0;
|
||||
c.join('').replace(escapable, function(a) {
|
||||
unrolled[ a ] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||
return '';
|
||||
});
|
||||
escapable.lastIndex = 0;
|
||||
return unrolled;
|
||||
};
|
||||
|
||||
// Quote string, also taking care of unicode characters that browsers
|
||||
// often break. Especially, take care of unicode surrogates:
|
||||
// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates
|
||||
module.exports = {
|
||||
quote: function(string) {
|
||||
var quoted = JSON3.stringify(string);
|
||||
|
||||
// In most cases this should be very fast and good enough.
|
||||
extraEscapable.lastIndex = 0;
|
||||
if (!extraEscapable.test(quoted)) {
|
||||
return quoted;
|
||||
}
|
||||
|
||||
if (!extraLookup) {
|
||||
extraLookup = unrollLookup(extraEscapable);
|
||||
}
|
||||
|
||||
return quoted.replace(extraEscapable, function(a) {
|
||||
return extraLookup[a];
|
||||
});
|
||||
}
|
||||
};
|
73
web/node_modules/sockjs-client/lib/utils/event.js
generated
vendored
Normal file
73
web/node_modules/sockjs-client/lib/utils/event.js
generated
vendored
Normal file
|
@ -0,0 +1,73 @@
|
|||
'use strict';
|
||||
|
||||
var random = require('./random');
|
||||
|
||||
var onUnload = {}
|
||||
, afterUnload = false
|
||||
// detect google chrome packaged apps because they don't allow the 'unload' event
|
||||
, isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime
|
||||
;
|
||||
|
||||
module.exports = {
|
||||
attachEvent: function(event, listener) {
|
||||
if (typeof global.addEventListener !== 'undefined') {
|
||||
global.addEventListener(event, listener, false);
|
||||
} else if (global.document && global.attachEvent) {
|
||||
// IE quirks.
|
||||
// According to: http://stevesouders.com/misc/test-postmessage.php
|
||||
// the message gets delivered only to 'document', not 'window'.
|
||||
global.document.attachEvent('on' + event, listener);
|
||||
// I get 'window' for ie8.
|
||||
global.attachEvent('on' + event, listener);
|
||||
}
|
||||
}
|
||||
|
||||
, detachEvent: function(event, listener) {
|
||||
if (typeof global.addEventListener !== 'undefined') {
|
||||
global.removeEventListener(event, listener, false);
|
||||
} else if (global.document && global.detachEvent) {
|
||||
global.document.detachEvent('on' + event, listener);
|
||||
global.detachEvent('on' + event, listener);
|
||||
}
|
||||
}
|
||||
|
||||
, unloadAdd: function(listener) {
|
||||
if (isChromePackagedApp) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var ref = random.string(8);
|
||||
onUnload[ref] = listener;
|
||||
if (afterUnload) {
|
||||
setTimeout(this.triggerUnloadCallbacks, 0);
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
, unloadDel: function(ref) {
|
||||
if (ref in onUnload) {
|
||||
delete onUnload[ref];
|
||||
}
|
||||
}
|
||||
|
||||
, triggerUnloadCallbacks: function() {
|
||||
for (var ref in onUnload) {
|
||||
onUnload[ref]();
|
||||
delete onUnload[ref];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var unloadTriggered = function() {
|
||||
if (afterUnload) {
|
||||
return;
|
||||
}
|
||||
afterUnload = true;
|
||||
module.exports.triggerUnloadCallbacks();
|
||||
};
|
||||
|
||||
// 'unload' alone is not reliable in opera within an iframe, but we
|
||||
// can't use `beforeunload` as IE fires it on javascript: links.
|
||||
if (!isChromePackagedApp) {
|
||||
module.exports.attachEvent('unload', unloadTriggered);
|
||||
}
|
186
web/node_modules/sockjs-client/lib/utils/iframe.js
generated
vendored
Normal file
186
web/node_modules/sockjs-client/lib/utils/iframe.js
generated
vendored
Normal file
|
@ -0,0 +1,186 @@
|
|||
'use strict';
|
||||
|
||||
var eventUtils = require('./event')
|
||||
, JSON3 = require('json3')
|
||||
, browser = require('./browser')
|
||||
;
|
||||
|
||||
var debug = function() {};
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
debug = require('debug')('sockjs-client:utils:iframe');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
WPrefix: '_jp'
|
||||
, currentWindowId: null
|
||||
|
||||
, polluteGlobalNamespace: function() {
|
||||
if (!(module.exports.WPrefix in global)) {
|
||||
global[module.exports.WPrefix] = {};
|
||||
}
|
||||
}
|
||||
|
||||
, postMessage: function(type, data) {
|
||||
if (global.parent !== global) {
|
||||
global.parent.postMessage(JSON3.stringify({
|
||||
windowId: module.exports.currentWindowId
|
||||
, type: type
|
||||
, data: data || ''
|
||||
}), '*');
|
||||
} else {
|
||||
debug('Cannot postMessage, no parent window.', type, data);
|
||||
}
|
||||
}
|
||||
|
||||
, createIframe: function(iframeUrl, errorCallback) {
|
||||
var iframe = global.document.createElement('iframe');
|
||||
var tref, unloadRef;
|
||||
var unattach = function() {
|
||||
debug('unattach');
|
||||
clearTimeout(tref);
|
||||
// Explorer had problems with that.
|
||||
try {
|
||||
iframe.onload = null;
|
||||
} catch (x) {
|
||||
// intentionally empty
|
||||
}
|
||||
iframe.onerror = null;
|
||||
};
|
||||
var cleanup = function() {
|
||||
debug('cleanup');
|
||||
if (iframe) {
|
||||
unattach();
|
||||
// This timeout makes chrome fire onbeforeunload event
|
||||
// within iframe. Without the timeout it goes straight to
|
||||
// onunload.
|
||||
setTimeout(function() {
|
||||
if (iframe) {
|
||||
iframe.parentNode.removeChild(iframe);
|
||||
}
|
||||
iframe = null;
|
||||
}, 0);
|
||||
eventUtils.unloadDel(unloadRef);
|
||||
}
|
||||
};
|
||||
var onerror = function(err) {
|
||||
debug('onerror', err);
|
||||
if (iframe) {
|
||||
cleanup();
|
||||
errorCallback(err);
|
||||
}
|
||||
};
|
||||
var post = function(msg, origin) {
|
||||
debug('post', msg, origin);
|
||||
setTimeout(function() {
|
||||
try {
|
||||
// When the iframe is not loaded, IE raises an exception
|
||||
// on 'contentWindow'.
|
||||
if (iframe && iframe.contentWindow) {
|
||||
iframe.contentWindow.postMessage(msg, origin);
|
||||
}
|
||||
} catch (x) {
|
||||
// intentionally empty
|
||||
}
|
||||
}, 0);
|
||||
};
|
||||
|
||||
iframe.src = iframeUrl;
|
||||
iframe.style.display = 'none';
|
||||
iframe.style.position = 'absolute';
|
||||
iframe.onerror = function() {
|
||||
onerror('onerror');
|
||||
};
|
||||
iframe.onload = function() {
|
||||
debug('onload');
|
||||
// `onload` is triggered before scripts on the iframe are
|
||||
// executed. Give it few seconds to actually load stuff.
|
||||
clearTimeout(tref);
|
||||
tref = setTimeout(function() {
|
||||
onerror('onload timeout');
|
||||
}, 2000);
|
||||
};
|
||||
global.document.body.appendChild(iframe);
|
||||
tref = setTimeout(function() {
|
||||
onerror('timeout');
|
||||
}, 15000);
|
||||
unloadRef = eventUtils.unloadAdd(cleanup);
|
||||
return {
|
||||
post: post
|
||||
, cleanup: cleanup
|
||||
, loaded: unattach
|
||||
};
|
||||
}
|
||||
|
||||
/* eslint no-undef: "off", new-cap: "off" */
|
||||
, createHtmlfile: function(iframeUrl, errorCallback) {
|
||||
var axo = ['Active'].concat('Object').join('X');
|
||||
var doc = new global[axo]('htmlfile');
|
||||
var tref, unloadRef;
|
||||
var iframe;
|
||||
var unattach = function() {
|
||||
clearTimeout(tref);
|
||||
iframe.onerror = null;
|
||||
};
|
||||
var cleanup = function() {
|
||||
if (doc) {
|
||||
unattach();
|
||||
eventUtils.unloadDel(unloadRef);
|
||||
iframe.parentNode.removeChild(iframe);
|
||||
iframe = doc = null;
|
||||
CollectGarbage();
|
||||
}
|
||||
};
|
||||
var onerror = function(r) {
|
||||
debug('onerror', r);
|
||||
if (doc) {
|
||||
cleanup();
|
||||
errorCallback(r);
|
||||
}
|
||||
};
|
||||
var post = function(msg, origin) {
|
||||
try {
|
||||
// When the iframe is not loaded, IE raises an exception
|
||||
// on 'contentWindow'.
|
||||
setTimeout(function() {
|
||||
if (iframe && iframe.contentWindow) {
|
||||
iframe.contentWindow.postMessage(msg, origin);
|
||||
}
|
||||
}, 0);
|
||||
} catch (x) {
|
||||
// intentionally empty
|
||||
}
|
||||
};
|
||||
|
||||
doc.open();
|
||||
doc.write('<html><s' + 'cript>' +
|
||||
'document.domain="' + global.document.domain + '";' +
|
||||
'</s' + 'cript></html>');
|
||||
doc.close();
|
||||
doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix];
|
||||
var c = doc.createElement('div');
|
||||
doc.body.appendChild(c);
|
||||
iframe = doc.createElement('iframe');
|
||||
c.appendChild(iframe);
|
||||
iframe.src = iframeUrl;
|
||||
iframe.onerror = function() {
|
||||
onerror('onerror');
|
||||
};
|
||||
tref = setTimeout(function() {
|
||||
onerror('timeout');
|
||||
}, 15000);
|
||||
unloadRef = eventUtils.unloadAdd(cleanup);
|
||||
return {
|
||||
post: post
|
||||
, cleanup: cleanup
|
||||
, loaded: unattach
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
module.exports.iframeEnabled = false;
|
||||
if (global.document) {
|
||||
// postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with
|
||||
// huge delay, or not at all.
|
||||
module.exports.iframeEnabled = (typeof global.postMessage === 'function' ||
|
||||
typeof global.postMessage === 'object') && (!browser.isKonqueror());
|
||||
}
|
18
web/node_modules/sockjs-client/lib/utils/log.js
generated
vendored
Normal file
18
web/node_modules/sockjs-client/lib/utils/log.js
generated
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
'use strict';
|
||||
|
||||
var logObject = {};
|
||||
['log', 'debug', 'warn'].forEach(function (level) {
|
||||
var levelExists;
|
||||
|
||||
try {
|
||||
levelExists = global.console && global.console[level] && global.console[level].apply;
|
||||
} catch(e) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
logObject[level] = levelExists ? function () {
|
||||
return global.console[level].apply(global.console, arguments);
|
||||
} : (level === 'log' ? function () {} : logObject.log);
|
||||
});
|
||||
|
||||
module.exports = logObject;
|
24
web/node_modules/sockjs-client/lib/utils/object.js
generated
vendored
Normal file
24
web/node_modules/sockjs-client/lib/utils/object.js
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
isObject: function(obj) {
|
||||
var type = typeof obj;
|
||||
return type === 'function' || type === 'object' && !!obj;
|
||||
}
|
||||
|
||||
, extend: function(obj) {
|
||||
if (!this.isObject(obj)) {
|
||||
return obj;
|
||||
}
|
||||
var source, prop;
|
||||
for (var i = 1, length = arguments.length; i < length; i++) {
|
||||
source = arguments[i];
|
||||
for (prop in source) {
|
||||
if (Object.prototype.hasOwnProperty.call(source, prop)) {
|
||||
obj[prop] = source[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
};
|
28
web/node_modules/sockjs-client/lib/utils/random.js
generated
vendored
Normal file
28
web/node_modules/sockjs-client/lib/utils/random.js
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
'use strict';
|
||||
|
||||
var crypto = require('crypto');
|
||||
|
||||
// This string has length 32, a power of 2, so the modulus doesn't introduce a
|
||||
// bias.
|
||||
var _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345';
|
||||
module.exports = {
|
||||
string: function(length) {
|
||||
var max = _randomStringChars.length;
|
||||
var bytes = crypto.randomBytes(length);
|
||||
var ret = [];
|
||||
for (var i = 0; i < length; i++) {
|
||||
ret.push(_randomStringChars.substr(bytes[i] % max, 1));
|
||||
}
|
||||
return ret.join('');
|
||||
}
|
||||
|
||||
, number: function(max) {
|
||||
return Math.floor(Math.random() * max);
|
||||
}
|
||||
|
||||
, numberString: function(max) {
|
||||
var t = ('' + (max - 1)).length;
|
||||
var p = new Array(t + 1).join('0');
|
||||
return (p + this.number(max)).slice(-t);
|
||||
}
|
||||
};
|
50
web/node_modules/sockjs-client/lib/utils/transport.js
generated
vendored
Normal file
50
web/node_modules/sockjs-client/lib/utils/transport.js
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
'use strict';
|
||||
|
||||
var debug = function() {};
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
debug = require('debug')('sockjs-client:utils:transport');
|
||||
}
|
||||
|
||||
module.exports = function(availableTransports) {
|
||||
return {
|
||||
filterToEnabled: function(transportsWhitelist, info) {
|
||||
var transports = {
|
||||
main: []
|
||||
, facade: []
|
||||
};
|
||||
if (!transportsWhitelist) {
|
||||
transportsWhitelist = [];
|
||||
} else if (typeof transportsWhitelist === 'string') {
|
||||
transportsWhitelist = [transportsWhitelist];
|
||||
}
|
||||
|
||||
availableTransports.forEach(function(trans) {
|
||||
if (!trans) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (trans.transportName === 'websocket' && info.websocket === false) {
|
||||
debug('disabled from server', 'websocket');
|
||||
return;
|
||||
}
|
||||
|
||||
if (transportsWhitelist.length &&
|
||||
transportsWhitelist.indexOf(trans.transportName) === -1) {
|
||||
debug('not in whitelist', trans.transportName);
|
||||
return;
|
||||
}
|
||||
|
||||
if (trans.enabled(info)) {
|
||||
debug('enabled', trans.transportName);
|
||||
transports.main.push(trans);
|
||||
if (trans.facadeTransport) {
|
||||
transports.facade.push(trans.facadeTransport);
|
||||
}
|
||||
} else {
|
||||
debug('disabled', trans.transportName);
|
||||
}
|
||||
});
|
||||
return transports;
|
||||
}
|
||||
};
|
||||
};
|
51
web/node_modules/sockjs-client/lib/utils/url.js
generated
vendored
Normal file
51
web/node_modules/sockjs-client/lib/utils/url.js
generated
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
'use strict';
|
||||
|
||||
var URL = require('url-parse');
|
||||
|
||||
var debug = function() {};
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
debug = require('debug')('sockjs-client:utils:url');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getOrigin: function(url) {
|
||||
if (!url) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var p = new URL(url);
|
||||
if (p.protocol === 'file:') {
|
||||
return null;
|
||||
}
|
||||
|
||||
var port = p.port;
|
||||
if (!port) {
|
||||
port = (p.protocol === 'https:') ? '443' : '80';
|
||||
}
|
||||
|
||||
return p.protocol + '//' + p.hostname + ':' + port;
|
||||
}
|
||||
|
||||
, isOriginEqual: function(a, b) {
|
||||
var res = this.getOrigin(a) === this.getOrigin(b);
|
||||
debug('same', a, b, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
, isSchemeEqual: function(a, b) {
|
||||
return (a.split(':')[0] === b.split(':')[0]);
|
||||
}
|
||||
|
||||
, addPath: function (url, path) {
|
||||
var qs = url.split('?');
|
||||
return qs[0] + path + (qs[1] ? '?' + qs[1] : '');
|
||||
}
|
||||
|
||||
, addQuery: function (url, q) {
|
||||
return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q));
|
||||
}
|
||||
|
||||
, isLoopbackAddr: function (addr) {
|
||||
return /^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || /^\[::1\]$/.test(addr);
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue