lil-http
Version:
Tiny, lightweight, full featured HTTP client
3 lines • 16.2 kB
JavaScript
/*! thread.js - v0.1.10 - MIT License - https://github.com/h2non/thread.js */
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;"undefined"!=typeof window?t=window:"undefined"!=typeof global?t=global:"undefined"!=typeof self&&(t=self),t.thread=e()}}(function(){var define,module,exports;return function e(t,r,n){function i(o,a){if(!r[o]){if(!t[o]){var u=typeof require=="function"&&require;if(!a&&u)return u(o,!0);if(s)return s(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=r[o]={exports:{}};t[o][0].call(l.exports,function(e){var r=t[o][1][e];return i(r?r:e)},l,l.exports,e,t,r,n)}return r[o].exports}var s=typeof require=="function"&&require;for(var o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,r){var n=e("./utils");var i=e("./worker");var s=window.addEventListener?"addEventListener":"attachEvent";var o=s==="attachEvent"?"onmessage":"message";var a=window[s];var u=window[window.removeEventListener?"removeEventListener":"detachEvent"];t.exports=f;function f(e){this.id=e;this.listeners={};this._create();this._setupListeners();this._initialize()}f.prototype._create=function(){var e=this.iframe=document.createElement("iframe");if(!e.style)e.style={};e.style.display="none";e.id="thread-"+this.id;document.body.appendChild(e)};f.prototype._subscribeListeners=function(e){var t=this.listeners;if(s==="attachEvent")e="on"+e;function r(r){if(r.data&&r.data.owner==="thread.js"){if(t[e]){n.each(t[e],function(e){if(n.isFn(e))e(r)})}}}this._eventHandler=r;a(e,r)};f.prototype._setupListeners=function(){this._subscribeListeners("message");this._subscribeListeners("error")};f.prototype._unsubscribeListeners=function(){u("error",this._eventHandler);u("message",this._eventHandler)};f.prototype._getWindow=function(){var e=this.iframe.contentWindow;var t=e.eval,r=e.execScript;if(!t&&r){r.call(e,"null");t=e.eval}return e};f.prototype._initialize=function(e){var t=this._getWindow();t.eval.call(t,n.getSource(i))};f.prototype.addEventListener=function(e,t){var r=this.listeners[e]=this.listeners[e]||[];if(n.isFn(t))r.push(t)};f.prototype.removeEventListener=function(e,t){var r,i=this.listeners[e];if(i){if(n.isFn(t)){i.splice(0,i.length)}else{r=i.indexOf(t);if(r>=0)i.splice(r,1)}}};f.prototype.postMessage=function(e){var t=this._getWindow();e.origin=l();t.postMessage(e,e.origin)};f.prototype.terminate=function(){this.listeners=null;this._unsubscribeListeners();document.body.removeChild(this.iframe)};function l(){return location.origin||location.protocol+"//"+location.hostname+(location.port?":"+location.port:"")}},{"./utils":7,"./worker":8}],2:[function(e,t,r){var n=e("./store");var i=e("./thread");t.exports=s;function s(e){return new i(e)}s.VERSION="0.1.10";s.create=s;s.Task=i.Task;s.Thread=i;s.total=n.all;s.total=n.total;s.running=n.running;s.idle=n.idle;s.flush=n.flush;s.killAll=s.terminateAll=n.killAll;s.killIdle=s.terminateIdle=n.killIdle},{"./store":4,"./thread":6}],3:[function(e,t,r){var n=e("./utils");t.exports=i;function i(e,t){var r=t.run;var s=[t];var o=t.options;var a=t.terminate;function u(e){var t,r,n,i;for(t=0,r=s.length;t<r;t+=1){n=s[t];i=n.pending();if(i===0||i<e){if(n.terminated){s.splice(t,1);r-=1}else{return n}}}}function f(){var e=new i.Thread(o);s.push(e);return e}function l(e,t){var n;if(e===s[0]){n=r.apply(e,t)}else{n=e.run.apply(e,t)}return n}t.run=t.exec=function(){var t=arguments;function r(n){var i,o=u(n);if(o){i=l(o,t)}else{if(s.length<e){i=l(f(),t)}else{i=r(n+1)}}return i}return r(0)};t.terminate=t.kill=function(){n.each(s,function(e,t){if(t===0)a.call(e);else e.terminate()});s.splice(0)};t.threadPool=s;t.isPool=true;return t}},{"./utils":7}],4:[function(e,t,r){var n=e("./utils");var i=[];var s=t.exports={};s.push=function(e){i.push(e)};s.all=function(){return i.slice()};s.remove=function(e){var t=i.indexOf(e);if(t>=0)i.splice(t,1)};s.flush=function(){i.splice(0)};s.total=function(){return i.length};function o(e){var t=[];n.each(i,function(r){if(r[e]())t.push(r)});return t}s.running=function(){return o("running")};s.idle=function(){return o("idle")};s.killAll=function(){var e=i.slice();n.each(e,function(e){e.kill()})};s.killIdle=function(){n.each(s.idle(),function(e){e.kill()})}},{"./utils":7}],5:[function(e,t,r){var n=e("./utils");t.exports=i;function i(e,t){this.id=n.uuid();this.thread=e;this.worker=e.worker;this.env=t||{};this.time=this.memoized=null;this.listeners={error:[],success:[],end:[]}}i.intervalCheckTime=200;i.prototype.bind=i.prototype.set=function(e){n.extend(this.env,e);return this};i.prototype.run=i.prototype.exec=function(e,t,r){var a=this.thread;if(a._terminated){throw new Error("cannot execute the task. The thread was terminated")}if(!n.isFn(e)){throw new TypeError("first argument must be a function")}if(n.isArr(arguments[1]))r=arguments[1];if(n.isObj(arguments[2]))t=arguments[2];t=n.serializeMap(n.extend({},this.env,t));this.memoized=null;this.time=n.now();if(a.maxTaskDelay>=i.intervalCheckTime){s(this,a.maxTaskDelay)}if(a._tasks.indexOf(this)===-1){a._tasks.push(this)}this["finally"](c(a,this));o(this);this._send(t,e,r);return this};i.prototype.then=i.prototype.success=function(e,t){if(n.isFn(e))a(this,"success",e);if(n.isFn(t))this["catch"](t);return this};i.prototype["catch"]=i.prototype.error=function(e){if(n.isFn(e))a(this,"error",e);return this};i.prototype["finally"]=i.prototype.finish=function(e){if(n.isFn(e)){if(this.memoized)e.call(null,y(this.memoized));else this.listeners.end.push(e)}return this};i.prototype.flush=function(){this.memoized=this.thread=null;this.worker=this.env=this.listeners=null};i.prototype.flushed=function(){return!this.thread&&!this.worker};i.prototype._send=function(e,t,r){this.worker.postMessage({id:this.id,type:"run",env:e,src:t.toString(),args:r})};function s(e,t){var r=n.now();e._timer=setInterval(function(){if(e.memoized){h.call(e)}else{p.call(e,r,t)}},i.intervalCheckTime)}i.create=function(e){return new i(e)};function o(e){e.worker.addEventListener("message",v(e))}function a(e,t,r){if(e.memoized){if(e.memoized.type==="run:"+t)r.call(null,y(e.memoized))}else{e.listeners[t].push(r)}}function u(e,t,r){if(typeof e._timer==="number")h.call(e);f(e,t)(e.listeners[r])}function f(e,t){return function r(e){var i=null;if(n.isArr(e)){i=e.shift();if(i){i.call(null,t);if(e.length)r(e)}}}}function l(e){var t=new Error(e.error);t.name=e.errorName;t.stack=e.errorStack;return t}function c(e,t){return function(){var r=e._tasks.indexOf(t);e._latestTask=n.now();if(r>=0)e._tasks.splice(r,1)}}function p(e,t){var r=null;if(n.now()-e>t){r=new Error("maximum task execution time exceeded");this.memoized={type:"run:error",error:r};u(this,r,"error");u(this,r,"end");h.call(this)}}function h(){clearInterval(this._timer);this._timer=null}function d(e){return e==="run:error"||e==="run:success"}function v(e){return function t(r){var n=r.data;if(n&&n.id===e.id&&d(n.type)){e.worker.removeEventListener("message",t);e.memoized=n;m(e,n)}}}function m(e,t){var r=y(t);u(e,r,t.type.split(":")[1]);u(e,r,"end")}function y(e){return e.type==="run:error"?l(e):e.value}},{"./utils":7}],6:[function(e,t,r){var n=e("./utils");var i=e("./worker");var s=e("./task");var o=e("./fake-worker");var a=e("./pool");var u=e("./store");var f=window.Worker;var l=window.URL||window.webkitURL;var c=n.isFn(f)||f&&typeof f==="object"||false;var p=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;t.exports=h;function h(e){this.id=n.uuid();this.terminated=false;this.options={};this._tasks=[];this._latestTask=0;this._setOptions(e);this._create()}h.prototype.isPool=false;h.prototype.maxTaskDelay=0;h.prototype.idleTime=30*1e3;h.prototype._setOptions=function(e){this.options.namespace="env";this.options.require=[];this.options.env={};n.extend(this.options,e);return this};h.prototype._create=function(){var e=n.getSource(i);if(c&&l){this.worker=new f(d(e))}else{this.worker=new o(this.id)}this.send(n.extend({type:"start"},{env:n.serializeMap(this.options.env),namespace:this.options.namespace}));this.worker.addEventListener("error",function(e){throw e});this.require(this.options.require);u.push(this);return this};h.prototype.run=h.prototype.exec=function(e,t,r){var i;if(n.isArr(t)){r=t;t=arguments[2]}if(e&&e instanceof s){i=e}else{if(!n.isFn(e))throw new TypeError("first argument must be a function");i=new s(this)}this._tasks.push(i);n.defer(function(){i.run(e,t,r)});return i};h.prototype.require=h.prototype["import"]=function(e,t){if(n.isFn(e)){t=e;e=n.fnName(t);if(!e)throw new Error("function must be named");this.send({type:"require:fn",src:t.toString(),name:n.fnName(t)})}else if(typeof e==="string"){if(n.isFn(t)){this.send({type:"require:fn",src:t.toString(),name:e})}else{if(n.isArr(this.options.require))this.options.require.push(e);this.send({type:"require:file",src:e})}}else if(n.isArr(e)){if(n.isArr(this.options.require))this.options.require=this.options.require.concat(e);this.send({type:"require:file",src:e})}else if(n.isObj(e)){this.send({type:"require:map",src:n.serializeMap(e)})}return this};h.prototype.bind=h.prototype.set=function(e){this.send({type:"env",data:n.serializeMap(e)});return this};h.prototype.flush=function(){this.send({type:"flush"});this.options.env={};return this};h.prototype.flushTasks=function(){n.each(this.tasks,function(e){e.flush()});this._tasks.splice(0);return this};h.prototype.send=function(e){if(this.worker){this.worker.postMessage(e)}};h.prototype.pool=function(e){return a(e||2,this)};h.prototype.terminate=h.prototype.kill=function(){if(!this.terminated){this.options={};this.flushTasks().flush();this.terminated=true;this.worker.terminate();u.remove(this)}return this};h.prototype.start=h.prototype.init=function(e){if(this.terminated){this._setOptions(e);this._create();this.terminated=false}return this};h.prototype.pending=function(){return this._tasks.length};h.prototype.running=function(){return this._tasks.length>0};h.prototype.idle=h.prototype.sleep=function(){return!this.running()&&!this.terminated&&(this._latestTask===0||n.now()-this._latestTask>this.idleTime)};h.prototype.on=h.prototype.addEventListener=function(e,t){if(this.worker)this.worker.addEventListener(e,t);return this};h.prototype.off=h.prototype.removeEventListener=function(e,t){if(this.worker&&n.isFn(t)){this.worker.removeEventListener(e,t)}return this};h.prototype.toString=function(){return"[object Thread]"};function d(e){var t=null;try{t=new Blob([e],{type:"text/javascript"})}catch(r){t=new p;t.append(e);t=t.getBlob()}return l.createObjectURL(t)}a.Thread=h;h.Task=s},{"./fake-worker":1,"./pool":3,"./store":4,"./task":5,"./utils":7,"./worker":8}],7:[function(e,t,r){var n=r;var i=Object.prototype.toString;var s=Array.prototype.slice;var o=Object.prototype.hasOwnProperty;var a=Array.isArray;n.now=function(){return(new Date).getTime()};n.isFn=function(e){return typeof e==="function"};n.isObj=function(e){return e&&i.call(e)==="[object Object]"||false};n.isArr=function(e){return e&&(a?a(e):i.call(e)==="[object Array]")||false};n.toArr=function(e){return s.call(e)};n.defer=function(e){setTimeout(e,1)};n.each=function(e,t){var r,i;if(n.isArr(e))for(r=0,i=e.length;r<i;r+=1)t(e[r],r);else if(n.isObj(e))for(r in e)if(o.call(e,r))t(e[r],r)};n.extend=function(e){var t=n.toArr(arguments).slice(1);n.each(t,function(t){if(n.isObj(t)){n.each(t,function(t,r){e[r]=t})}});return e};n.getSource=function(e){return"("+e.toString()+").call(this)"};n.fnName=function(e){return e.name||(e=/\W*function\s+([\w\$]+)\(/.exec(e.toString())?e[1]:"")};n.serializeMap=function(e){if(n.isObj(e)){n.each(e,function(t,r){if(n.isFn(t)){e["$$fn$$"+r]=t.toString();e[r]=undefined}})}return e};n.uuid=function(){var e="",t,r;for(t=0;t<32;t++){r=Math.random()*16|0;if(t===8||t===12||t===16||t===20)e+="-";e+=(t===12?4:t===16?r&3|8:r).toString(16)}return e}},{}],8:[function(require,module,exports){module.exports=worker;function worker(){var self=this;function $$evalExpr(expr){var fn=null;eval("fn = "+expr);return fn}(function isolated(){"use strict";var namespace="env";var isWorker=self.document===undefined;var toStr=Object.prototype.toString;var slice=Array.prototype.slice;var eventMethod=self.addEventListener?"addEventListener":"attachEvent";var messageEvent=eventMethod==="attachEvent"?"onmessage":"message";var importFn=isWorker?importScripts:appendScripts;var ready=false;var queue,origin,scriptsLoad,intervalId=null;var fnRegex=/^\$\$fn\$\$/;var urlProtocolRegex=/^http[s]?/;var isArrayNative=Array.isArray;self.addEventListener=self[eventMethod];function isObj(e){return e&&toStr.call(e)==="[object Object]"}function isArr(e){return e&&isArrayNative?isArrayNative(e):toStr.call(e)==="[object Array]"}function mapFields(e){for(var t in e)if(e.hasOwnProperty(t)){if(fnRegex.test(t)){e[t.replace("$$fn$$","")]=$$evalExpr(e[t]);e[t]=undefined}else{e[t]=e[t]}}return e}function extend(e,t){var r,n,i,s=slice.call(arguments).slice(1);for(r=0,n=s.length;r<n;r+=1){t=s[r];if(isObj(t)){t=mapFields(t);for(i in t)if(t[i]!==undefined){e[i]=t[i]}}}return e}function each(e,t){var r,n;if(isArr(e)){if(e.forEach){e.forEach(t)}else{for(r=0,n=e.length;r<n;r+=1){t(e[r],r)}}}else if(isObj(e)){for(r in e)if(e.hasOwnProperty(r)){t(e[r],r)}}}function waitToDocumentReady(){var e=self.document;if(e.readyState==="complete"){ready=true}else{e.onreadystatechange=function(){if(e.readyState==="complete"){ready=true}}}}function appendScript(e){var t=document.getElementsByTagName("head")[0];var r=document.createElement("script");r.type="text/javascript";r.src=e;scriptsLoad.push(r);r.onload=r.onreadystatechange=function(){if(!this.readyState||this.readyState==="loaded"||this.readyState==="complete"){scriptsLoad.splice(scriptsLoad.indexOf(r),1)}r.onload=r.onreadystatechange=null};t.appendChild(r)}function appendScripts(){var e,t,r=slice.call(arguments);for(e=0,t=r.length;e<t;e+=1){if(r[e])appendScript(r[e])}}function scriptsLoadTimer(){intervalId=setInterval(function(){if(ready&&!scriptsLoad.length){clearInterval(intervalId);each(queue,function(e){e()});queue=[];intervalId=null}},50)}function loadScripts(e){if(isArr(e)){importFn.apply(self,e.map(makePathFullUrl))}else{importFn(makePathFullUrl(e))}if(!isWorker&&!intervalId){scriptsLoadTimer()}}function makePathFullUrl(e){if(urlProtocolRegex.test(e)===false){e=location.origin+e}return e}function require(e){if(isArr(e)||typeof e==="string"){loadScripts(e)}else if(isObj(e)){each(e,function(e,t){requireFn(t,e)})}}function requireFn(name,fn){if(fnRegex.test(name)){name=name.replace("$$fn$$","");fn=$$evalExpr(fn)}eval("self[namespace][name] = "+fn)}function postMessage(e){if(isWorker){self.postMessage(e)}else{e.owner="thread.js";self.parent.postMessage(e,origin)}}function sendError(e,t){postMessage({type:"run:error",id:e.id,error:t.message||t,errorName:t.name||null,errorStack:t.stack||null})}function sendSuccess(e,t){postMessage({type:"run:success",id:e.id,value:t})}function done(e){return function(t,r){if(t){sendError(e,t)}else{sendSuccess(e,r)}}}function process(e){var t=null;var r=e.args||[];var n=$$evalExpr(e.src);var i=isObj(e.env)?mapFields(e.env):self[namespace];if(n.length===r.length+1){r.push(done(e));n.apply(i,r)}else{t=n.apply(i,r);if(t instanceof Error){sendError(e,t)}else{sendSuccess(e,t)}}}function run(e){function t(){try{process(e)}catch(t){sendError(e,t)}}if(!isWorker&&(!ready||scriptsLoad.length)){queue.push(t)}else{t()}}function start(e){if(e.require){require(e.require)}if(e.origin){origin=e.origin}namespace=e.namespace||namespace;self[namespace]=mapFields(e.env||{})}function flush(){self[namespace]={}}function extendEnv(e){extend(self[namespace||namespace],e.env)}function onMessage(e){var t=e.data;if(t.origin){origin=t.origin}switch(t.type){case"start":start(t);break;case"run":run(t);break;case"env":extendEnv(t);break;case"require:fn":requireFn(t.name,t.src);break;case"require:file":case"require:map":require(t.src);break;case"flush":flush();break}}if(!isWorker){scriptsLoad=[];queue=[];waitToDocumentReady()}self.addEventListener(messageEvent,onMessage);self.addEventListener("error",function(e){throw e})})()}},{}]},{},[2])(2)});
//# sourceMappingURL=http://cdn.rawgit.com/h2non/thread.js/0.1.10/thread.min.js.map