algoliasearch-rails 1.16.3 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +8 -0
- data/Gemfile +6 -1
- data/Gemfile.lock +3 -3
- data/README.md +153 -94
- data/VERSION +1 -1
- data/algoliasearch-rails.gemspec +1 -1
- data/lib/algoliasearch-rails.rb +75 -36
- data/spec/spec_helper.rb +7 -0
- data/vendor/assets/javascripts/algolia/algoliasearch.angular.js +23 -12
- data/vendor/assets/javascripts/algolia/algoliasearch.angular.min.js +2 -2
- data/vendor/assets/javascripts/algolia/algoliasearch.jquery.js +23 -12
- data/vendor/assets/javascripts/algolia/algoliasearch.jquery.min.js +2 -2
- data/vendor/assets/javascripts/algolia/algoliasearch.js +22 -12
- data/vendor/assets/javascripts/algolia/algoliasearch.min.js +2 -2
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.angular.js +23 -12
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.angular.min.js +2 -2
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.jquery.js +23 -12
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.jquery.min.js +2 -2
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.js +22 -12
- data/vendor/assets/javascripts/algolia/v2/algoliasearch.min.js +2 -2
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.angular.js +2020 -1301
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.angular.min.js +3 -3
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.jquery.js +2019 -1300
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.jquery.min.js +3 -3
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.js +2003 -1284
- data/vendor/assets/javascripts/algolia/v3/algoliasearch.min.js +3 -3
- metadata +5 -6
@@ -1,3 +1,3 @@
|
|
1
|
-
/*! algoliasearch 3.
|
2
|
-
!function(e){var t;"undefined"!=typeof window?t=window:"undefined"!=typeof self&&(t=self),t.ALGOLIA_MIGRATION_LAYER=e()}(function(){return function e(t,o,r){function n(i,a){if(!o[i]){if(!t[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(s)return s(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var l=o[i]={exports:{}};t[i][0].call(l.exports,function(e){var o=t[i][1][e];return n(o?o:e)},l,l.exports,e,t,o,r)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i<r.length;i++)n(r[i]);return n}({1:[function(e,t,o){function r(e,t){for(var o in t)e.setAttribute(o,t[o])}function n(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function s(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}t.exports=function(e,t,o){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("script");"function"==typeof t&&(o=t,t={}),t=t||{},o=o||function(){},a.type=t.type||"text/javascript",a.charset=t.charset||"utf8",a.async=!("async"in t)||!!t.async,a.src=e,t.attrs&&r(a,t.attrs),t.text&&(a.text=""+t.text);var c="onload"in a?n:s;c(a,o),a.onload||n(a,o),i.appendChild(a)}},{}],2:[function(e,t,o){"use strict";function r(e){for(var t=new RegExp("cdn\\.jsdelivr\\.net/algoliasearch/latest/"+e.replace(".","\\.")+"(?:\\.min)?\\.js$"),o=document.getElementsByTagName("script"),r=!1,n=0,s=o.length;n<s;n++)if(o[n].src&&t.test(o[n].src)){r=!0;break}return r}t.exports=r},{}],3:[function(e,t,o){"use strict";function r(t){var o=e(1),r="//cdn.jsdelivr.net/algoliasearch/2/"+t+".min.js",s="-- AlgoliaSearch `latest` warning --\nWarning, you are using the `latest` version string from jsDelivr to load the AlgoliaSearch library.\nUsing `latest` is no more recommended, you should load //cdn.jsdelivr.net/algoliasearch/2/algoliasearch.min.js\n\nAlso, we updated the AlgoliaSearch JavaScript client to V3. If you want to upgrade,\nplease read our migration guide at https://github.com/algolia/algoliasearch-client-js/wiki/Migration-guide-from-2.x.x-to-3.x.x\n-- /AlgoliaSearch `latest` warning --";window.console&&(window.console.warn?window.console.warn(s):window.console.log&&window.console.log(s));try{document.write("<script>window.ALGOLIA_SUPPORTS_DOCWRITE = true</script>"),window.ALGOLIA_SUPPORTS_DOCWRITE===!0?(document.write('<script src="'+r+'"></script>'),n("document.write")()):o(r,n("DOMElement"))}catch(i){o(r,n("DOMElement"))}}function n(e){return function(){var t="AlgoliaSearch: loaded V2 script using "+e;window.console&&window.console.log&&window.console.log(t)}}t.exports=r},{1:1}],4:[function(e,t,o){"use strict";function r(){var e="-- AlgoliaSearch V2 => V3 error --\nYou are trying to use a new version of the AlgoliaSearch JavaScript client with an old notation.\nPlease read our migration guide at https://github.com/algolia/algoliasearch-client-js/wiki/Migration-guide-from-2.x.x-to-3.x.x\n-- /AlgoliaSearch V2 => V3 error --";window.AlgoliaSearch=function(){throw new Error(e)},window.AlgoliaSearchHelper=function(){throw new Error(e)},window.AlgoliaExplainResults=function(){throw new Error(e)}}t.exports=r},{}],5:[function(e,t,o){"use strict";function r(t){var o=e(2),r=e(3),n=e(4);o(t)?r(t):n()}r("algoliasearch.angular")},{2:2,3:3,4:4}]},{},[5])(5)}),function e(t,o,r){function n(i,a){if(!o[i]){if(!t[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(s)return s(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var l=o[i]={exports:{}};t[i][0].call(l.exports,function(e){var o=t[i][1][e];return n(o?o:e)},l,l.exports,e,t,o,r)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i<r.length;i++)n(r[i]);return n}({1:[function(e,t,o){function r(e){if(e=""+e,!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var o=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return o*p;case"days":case"day":case"d":return o*l;case"hours":case"hour":case"hrs":case"hr":case"h":return o*u;case"minutes":case"minute":case"mins":case"min":case"m":return o*c;case"seconds":case"second":case"secs":case"sec":case"s":return o*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o}}}}function n(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=c?Math.round(e/c)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function s(e){return i(e,l,"day")||i(e,u,"hour")||i(e,c,"minute")||i(e,a,"second")||e+" ms"}function i(e,t,o){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+o:Math.ceil(e/t)+" "+o+"s"}var a=1e3,c=60*a,u=60*c,l=24*u,p=365.25*l;t.exports=function(e,t){return t=t||{},"string"==typeof e?r(e):t["long"]?s(e):n(e)}},{}],2:[function(e,t,o){function r(){d&&l&&(d=!1,l.length?p=l.concat(p):h=-1,p.length&&n())}function n(){if(!d){var e=a(r);d=!0;for(var t=p.length;t;){for(l=p,p=[];++h<t;)l&&l[h].run();h=-1,t=p.length}l=null,d=!1,c(e)}}function s(e,t){this.fun=e,this.array=t}function i(){}var a,c,u=t.exports={};!function(){try{a=setTimeout}catch(e){a=function(){throw new Error("setTimeout is not defined")}}try{c=clearTimeout}catch(e){c=function(){throw new Error("clearTimeout is not defined")}}}();var l,p=[],d=!1,h=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var o=1;o<arguments.length;o++)t[o-1]=arguments[o];p.push(new s(e,t)),1!==p.length||d||a(n,0)},s.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=i,u.addListener=i,u.once=i,u.off=i,u.removeListener=i,u.removeAllListeners=i,u.emit=i,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],3:[function(e,t,o){function r(){return"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function n(){var e=arguments,t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+o.humanize(this.diff),!t)return e;var r="color: "+this.color;e=[e[0],r,"color: inherit"].concat(Array.prototype.slice.call(e,1));var n=0,s=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(n++,"%c"===e&&(s=n))}),e.splice(s,0,r),e}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function i(e){try{null==e?o.storage.removeItem("debug"):o.storage.debug=e}catch(t){}}function a(){var e;try{e=o.storage.debug}catch(t){}return e}function c(){try{return window.localStorage}catch(e){}}o=t.exports=e(4),o.log=s,o.formatArgs=n,o.save=i,o.load=a,o.useColors=r,o.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:c(),o.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],o.formatters.j=function(e){return JSON.stringify(e)},o.enable(a())},{4:4}],4:[function(e,t,o){function r(){return o.colors[l++%o.colors.length]}function n(e){function t(){}function n(){var e=n,t=+new Date,s=t-(u||t);e.diff=s,e.prev=u,e.curr=t,u=t,null==e.useColors&&(e.useColors=o.useColors()),null==e.color&&e.useColors&&(e.color=r());var i=Array.prototype.slice.call(arguments);i[0]=o.coerce(i[0]),"string"!=typeof i[0]&&(i=["%o"].concat(i));var a=0;i[0]=i[0].replace(/%([a-z%])/g,function(t,r){if("%%"===t)return t;a++;var n=o.formatters[r];if("function"==typeof n){var s=i[a];t=n.call(e,s),i.splice(a,1),a--}return t}),"function"==typeof o.formatArgs&&(i=o.formatArgs.apply(e,i));var c=n.log||o.log||console.log.bind(console);c.apply(e,i)}t.enabled=!1,n.enabled=!0;var s=o.enabled(e)?n:t;return s.namespace=e,s}function s(e){o.save(e);for(var t=(e||"").split(/[\s,]+/),r=t.length,n=0;n<r;n++)t[n]&&(e=t[n].replace(/\*/g,".*?"),"-"===e[0]?o.skips.push(new RegExp("^"+e.substr(1)+"$")):o.names.push(new RegExp("^"+e+"$")))}function i(){o.enable("")}function a(e){var t,r;for(t=0,r=o.skips.length;t<r;t++)if(o.skips[t].test(e))return!1;for(t=0,r=o.names.length;t<r;t++)if(o.names[t].test(e))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}o=t.exports=n,o.coerce=c,o.disable=i,o.enable=s,o.enabled=a,o.humanize=e(1),o.names=[],o.skips=[],o.formatters={};var u,l=0},{1:1}],5:[function(e,t,o){(function(o,r){(function(){"use strict";function n(e){return"function"==typeof e||"object"==typeof e&&null!==e}function s(e){return"function"==typeof e}function i(e){X=e}function a(e){z=e}function c(){return function(){o.nextTick(h)}}function u(){return function(){V(h)}}function l(){var e=0,t=new te(h),o=document.createTextNode("");return t.observe(o,{characterData:!0}),function(){o.data=e=++e%2}}function p(){var e=new MessageChannel;return e.port1.onmessage=h,function(){e.port2.postMessage(0)}}function d(){return function(){setTimeout(h,1)}}function h(){for(var e=0;e<Y;e+=2){var t=ne[e],o=ne[e+1];t(o),ne[e]=void 0,ne[e+1]=void 0}Y=0}function f(){try{var t=e,o=t("vertx");return V=o.runOnLoop||o.runOnContext,u()}catch(r){return d()}}function y(e,t){var o=this,r=new this.constructor(v);void 0===r[ae]&&N(r);var n=o._state;if(n){var s=arguments[n-1];z(function(){U(n,r,s,o._result)})}else q(o,r,e,t);return r}function m(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var o=new t(v);return S(o,e),o}function v(){}function g(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function w(e){try{return e.then}catch(t){return pe.error=t,pe}}function _(e,t,o,r){try{e.call(t,o,r)}catch(n){return n}}function x(e,t,o){z(function(e){var r=!1,n=_(o,t,function(o){r||(r=!0,t!==o?S(e,o):R(e,o))},function(t){r||(r=!0,O(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&n&&(r=!0,O(e,n))},e)}function T(e,t){t._state===ue?R(e,t._result):t._state===le?O(e,t._result):q(t,void 0,function(t){S(e,t)},function(t){O(e,t)})}function j(e,t,o){t.constructor===e.constructor&&o===se&&constructor.resolve===ie?T(e,t):o===pe?O(e,pe.error):void 0===o?R(e,t):s(o)?x(e,t,o):R(e,t)}function S(e,t){e===t?O(e,g()):n(t)?j(e,t,w(t)):R(e,t)}function k(e){e._onerror&&e._onerror(e._result),P(e)}function R(e,t){e._state===ce&&(e._result=t,e._state=ue,0!==e._subscribers.length&&z(P,e))}function O(e,t){e._state===ce&&(e._state=le,e._result=t,z(k,e))}function q(e,t,o,r){var n=e._subscribers,s=n.length;e._onerror=null,n[s]=t,n[s+ue]=o,n[s+le]=r,0===s&&e._state&&z(P,e)}function P(e){var t=e._subscribers,o=e._state;if(0!==t.length){for(var r,n,s=e._result,i=0;i<t.length;i+=3)r=t[i],n=t[i+o],r?U(o,r,n,s):n(s);e._subscribers.length=0}}function E(){this.error=null}function I(e,t){try{return e(t)}catch(o){return de.error=o,de}}function U(e,t,o,r){var n,i,a,c,u=s(o);if(u){if(n=I(o,r),n===de?(c=!0,i=n.error,n=null):a=!0,t===n)return void O(t,b())}else n=r,a=!0;t._state!==ce||(u&&a?S(t,n):c?O(t,i):e===ue?R(t,n):e===le&&O(t,n))}function A(e,t){try{t(function(t){S(e,t)},function(t){O(e,t)})}catch(o){O(e,o)}}function C(){return he++}function N(e){e[ae]=he++,e._state=void 0,e._result=void 0,e._subscribers=[]}function L(e){return new ge(this,e).promise}function D(e){var t=this;return new t($(e)?function(o,r){for(var n=e.length,s=0;s<n;s++)t.resolve(e[s]).then(o,r)}:function(e,t){t(new TypeError("You must pass an array to race."))})}function H(e){var t=this,o=new t(v);return O(o,e),o}function J(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function M(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function K(e){this[ae]=C(),this._result=this._state=void 0,this._subscribers=[],v!==e&&("function"!=typeof e&&J(),this instanceof K?A(this,e):M())}function Q(e,t){this._instanceConstructor=e,this.promise=new e(v),this.promise[ae]||N(this.promise),$(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?R(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&R(this.promise,this._result))):O(this.promise,B())}function B(){return new Error("Array Methods must be provided an Array")}function F(){var e;if("undefined"!=typeof r)e=r;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var o=e.Promise;o&&"[object Promise]"===Object.prototype.toString.call(o.resolve())&&!o.cast||(e.Promise=ve)}var G;G=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var V,X,W,$=G,Y=0,z=function(e,t){ne[Y]=e,ne[Y+1]=t,Y+=2,2===Y&&(X?X(h):W())},Z="undefined"!=typeof window?window:void 0,ee=Z||{},te=ee.MutationObserver||ee.WebKitMutationObserver,oe="undefined"==typeof self&&"undefined"!=typeof o&&"[object process]"==={}.toString.call(o),re="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,ne=new Array(1e3);W=oe?c():te?l():re?p():void 0===Z&&"function"==typeof e?f():d();var se=y,ie=m,ae=Math.random().toString(36).substring(16),ce=void 0,ue=1,le=2,pe=new E,de=new E,he=0,fe=L,ye=D,me=H,ve=K;K.all=fe,K.race=ye,K.resolve=ie,K.reject=me,K._setScheduler=i,K._setAsap=a,K._asap=z,K.prototype={constructor:K,then:se,"catch":function(e){return this.then(null,e)}};var ge=Q;Q.prototype._enumerate=function(){for(var e=this.length,t=this._input,o=0;this._state===ce&&o<e;o++)this._eachEntry(t[o],o)},Q.prototype._eachEntry=function(e,t){var o=this._instanceConstructor,r=o.resolve;if(r===ie){var n=w(e);if(n===se&&e._state!==ce)this._settledAt(e._state,t,e._result);else if("function"!=typeof n)this._remaining--,this._result[t]=e;else if(o===ve){var s=new o(v);j(s,e,n),this._willSettleAt(s,t)}else this._willSettleAt(new o(function(t){t(e)}),t)}else this._willSettleAt(r(e),t)},Q.prototype._settledAt=function(e,t,o){var r=this.promise;r._state===ce&&(this._remaining--,e===le?O(r,o):this._result[t]=o),0===this._remaining&&R(r,this._result)},Q.prototype._willSettleAt=function(e,t){var o=this;q(e,void 0,function(e){o._settledAt(ue,t,e)},function(e){o._settledAt(le,t,e)})};var be=F,we={Promise:ve,polyfill:be};"function"==typeof define&&define.amd?define(function(){return we}):"undefined"!=typeof t&&t.exports?t.exports=we:"undefined"!=typeof this&&(this.ES6Promise=we),be()}).call(this)}).call(this,e(2),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],6:[function(e,t,o){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return"function"==typeof e}function s(e){return"number"==typeof e}function i(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,o,r,s,c,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}if(o=this._events[e],a(o))return!1;if(n(o))switch(arguments.length){case 1:o.call(this);break;case 2:o.call(this,arguments[1]);break;case 3:o.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),o.apply(this,s)}else if(i(o))for(s=Array.prototype.slice.call(arguments,1),u=o.slice(),r=u.length,c=0;c<r;c++)u[c].apply(this,s);return!0},r.prototype.addListener=function(e,t){var o;if(!n(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,n(t.listener)?t.listener:t),this._events[e]?i(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,i(this._events[e])&&!this._events[e].warned&&(o=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,o&&o>0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function o(){this.removeListener(e,o),r||(r=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var r=!1;return o.listener=t,this.on(e,o),this},r.prototype.removeListener=function(e,t){var o,r,s,a;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(o=this._events[e],s=o.length,r=-1,o===t||n(o.listener)&&o.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(o)){for(a=s;a-- >0;)if(o[a]===t||o[a].listener&&o[a].listener===t){r=a;break}if(r<0)return this;1===o.length?(o.length=0,delete this._events[e]):o.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,o;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(o=this._events[e],n(o))this.removeListener(e,o);else if(o)for(;o.length;)this.removeListener(e,o[o.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],7:[function(e,t,o){var r=Object.prototype.hasOwnProperty,n=Object.prototype.toString;t.exports=function(e,t,o){if("[object Function]"!==n.call(t))throw new TypeError("iterator must be a function");var s=e.length;if(s===+s)for(var i=0;i<s;i++)t.call(o,e[i],i,e);else for(var a in e)r.call(e,a)&&t.call(o,e[a],a,e)}},{}],8:[function(e,t,o){(function(e){"undefined"!=typeof window?t.exports=window:"undefined"!=typeof e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],9:[function(e,t,o){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var o=function(){};o.prototype=t.prototype,e.prototype=new o,e.prototype.constructor=e}},{}],10:[function(e,t,o){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],11:[function(e,t,o){"use strict";function r(e,t){if(e.map)return e.map(t);for(var o=[],r=0;r<e.length;r++)o.push(t(e[r],r));return o}var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,o,a){return t=t||"&",o=o||"=",null===e&&(e=void 0),"object"==typeof e?r(i(e),function(i){var a=encodeURIComponent(n(i))+o;return s(e[i])?r(e[i],function(e){return a+encodeURIComponent(n(e))}).join(t):a+encodeURIComponent(n(e[i]))}).join(t):a?encodeURIComponent(n(a))+o+encodeURIComponent(n(e)):""};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=Object.keys||function(e){var t=[];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.push(o);return t}},{}],12:[function(e,t,o){function r(){c.apply(this,arguments)}function n(){var e="Not implemented in this environment.\nIf you feel this is a mistake, write to support@algolia.com";throw new l.AlgoliaSearchError(e)}t.exports=r;var s=e(14),i=e(25),a=e(26),c=e(13),u=e(9),l=e(27);u(r,c),r.prototype.deleteIndex=function(e,t){return this._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(e),hostType:"write",callback:t})},r.prototype.moveIndex=function(e,t,o){var r={operation:"move",destination:t};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(e)+"/operation",body:r,hostType:"write",callback:o})},r.prototype.copyIndex=function(e,t,o){var r={operation:"copy",destination:t};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(e)+"/operation",body:r,hostType:"write",callback:o})},r.prototype.getLogs=function(t,o,r){var n=e(24),s={};return"object"==typeof t?(s=n(t),r=o):0===arguments.length||"function"==typeof t?r=t:1===arguments.length||"function"==typeof o?(r=o,s.offset=t):(s.offset=t,s.length=o),void 0===s.offset&&(s.offset=0),void 0===s.length&&(s.length=10),this._jsonRequest({method:"GET",url:"/1/logs?"+this._getSearchParams(s,""),hostType:"read",callback:r})},r.prototype.listIndexes=function(e,t){var o="";return void 0===e||"function"==typeof e?t=e:o="?page="+e,this._jsonRequest({method:"GET",url:"/1/indexes"+o,hostType:"read",callback:t})},r.prototype.initIndex=function(e){return new s(this,e)},r.prototype.listUserKeys=function(e){return this._jsonRequest({method:"GET",url:"/1/keys",hostType:"read",callback:e})},r.prototype.getUserKeyACL=function(e,t){return this._jsonRequest({method:"GET",url:"/1/keys/"+e,hostType:"read",callback:t})},r.prototype.deleteUserKey=function(e,t){return this._jsonRequest({method:"DELETE",url:"/1/keys/"+e,hostType:"write",callback:t})},r.prototype.addUserKey=function(t,o,r){var n=e(10),s="Usage: client.addUserKey(arrayOfAcls[, params, callback])";if(!n(t))throw new Error(s);1!==arguments.length&&"function"!=typeof o||(r=o,o=null);var i={acl:t};return o&&(i.validity=o.validity,i.maxQueriesPerIPPerHour=o.maxQueriesPerIPPerHour,i.maxHitsPerQuery=o.maxHitsPerQuery,i.indexes=o.indexes,i.description=o.description,o.queryParameters&&(i.queryParameters=this._getSearchParams(o.queryParameters,"")),i.referers=o.referers),this._jsonRequest({method:"POST",url:"/1/keys",body:i,hostType:"write",callback:r})},r.prototype.addUserKeyWithValidity=i(function(e,t,o){return this.addUserKey(e,t,o)},a("client.addUserKeyWithValidity()","client.addUserKey()")),r.prototype.updateUserKey=function(t,o,r,n){var s=e(10),i="Usage: client.updateUserKey(key, arrayOfAcls[, params, callback])";if(!s(o))throw new Error(i);2!==arguments.length&&"function"!=typeof r||(n=r,r=null);var a={acl:o};return r&&(a.validity=r.validity,a.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,a.maxHitsPerQuery=r.maxHitsPerQuery,a.indexes=r.indexes,a.description=r.description,r.queryParameters&&(a.queryParameters=this._getSearchParams(r.queryParameters,"")),a.referers=r.referers),this._jsonRequest({method:"PUT",url:"/1/keys/"+t,body:a,hostType:"write",callback:n})},r.prototype.startQueriesBatch=i(function(){this._batch=[]},a("client.startQueriesBatch()","client.search()")),r.prototype.addQueryInBatch=i(function(e,t,o){this._batch.push({indexName:e,query:t,params:o})},a("client.addQueryInBatch()","client.search()")),r.prototype.sendQueriesBatch=i(function(e){return this.search(this._batch,e)},a("client.sendQueriesBatch()","client.search()")),r.prototype.batch=function(t,o){var r=e(10),n="Usage: client.batch(operations[, callback])";if(!r(t))throw new Error(n);return this._jsonRequest({method:"POST",url:"/1/indexes/*/batch",body:{requests:t},hostType:"write",callback:o})},r.prototype.destroy=n,r.prototype.enableRateLimitForward=n,r.prototype.disableRateLimitForward=n,r.prototype.useSecuredAPIKey=n,r.prototype.disableSecuredAPIKey=n,r.prototype.generateSecuredApiKey=n},{10:10,13:13,14:14,24:24,25:25,26:26,27:27,9:9}],13:[function(e,t,o){function r(t,o,r){var s=e(3)("algoliasearch"),a=e(24),u=e(10),l=e(29),p="Usage: algoliasearch(applicationID, apiKey, opts)";if(r._allowEmptyCredentials!==!0&&!t)throw new c.AlgoliaSearchError("Please provide an application ID. "+p);if(r._allowEmptyCredentials!==!0&&!o)throw new c.AlgoliaSearchError("Please provide an API key. "+p);this.applicationID=t,this.apiKey=o;var d=i([this.applicationID+"-1.algolianet.com",this.applicationID+"-2.algolianet.com",this.applicationID+"-3.algolianet.com"]);this.hosts={read:[],write:[]},this.hostIndex={read:0,write:0},r=r||{};var h=r.protocol||"https:",f=void 0===r.timeout?2e3:r.timeout;if(/:$/.test(h)||(h+=":"),"http:"!==r.protocol&&"https:"!==r.protocol)throw new c.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+r.protocol+"`)");r.hosts?u(r.hosts)?(this.hosts.read=a(r.hosts),this.hosts.write=a(r.hosts)):(this.hosts.read=a(r.hosts.read),this.hosts.write=a(r.hosts.write)):(this.hosts.read=[this.applicationID+"-dsn.algolia.net"].concat(d),this.hosts.write=[this.applicationID+".algolia.net"].concat(d)),this.hosts.read=l(this.hosts.read,n(h)),this.hosts.write=l(this.hosts.write,n(h)),this.requestTimeout=f,this.extraHeaders=[],this.cache=r._cache||{},this._ua=r._ua,this._useCache=!(void 0!==r._useCache&&!r._cache)||r._useCache,this._useFallback=void 0===r.useFallback||r.useFallback,this._setTimeout=r._setTimeout,s("init done, %j",this)}function n(e){return function(t){return e+"//"+t.toLowerCase()}}function s(e){if(void 0===Array.prototype.toJSON)return JSON.stringify(e);var t=Array.prototype.toJSON;delete Array.prototype.toJSON;var o=JSON.stringify(e);return Array.prototype.toJSON=t,o}function i(e){for(var t,o,r=e.length;0!==r;)o=Math.floor(Math.random()*r),r-=1,t=e[r],e[r]=e[o],e[o]=t;return e}function a(e){var t={};for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var r;r="x-algolia-api-key"===o||"x-algolia-application-id"===o?"**hidden for security purposes**":e[o],t[o]=r}return t}t.exports=r;var c=e(27),u=e(28),l=e(16),p=500;r.prototype.initIndex=function(e){return new l(this,e)},r.prototype.setExtraHeader=function(e,t){this.extraHeaders.push({name:e.toLowerCase(),value:t})},r.prototype.addAlgoliaAgent=function(e){this._ua+=";"+e},r.prototype._jsonRequest=function(t){function o(e,u){function p(e){var t=e&&e.body&&e.body.message&&e.body.status||e.statusCode||e&&e.body&&200;i("received response: statusCode: %s, computed statusCode: %d, headers: %j",e.statusCode,t,e.headers);var o=2===Math.floor(t/100),s=new Date;if(m.push({currentHost:x,headers:a(n),content:r||null,contentLength:void 0!==r?r.length:null,method:u.method,timeout:u.timeout,url:u.url,startTime:_,endTime:s,duration:s-_,statusCode:t}),o)return d._useCache&&l&&(l[w]=e.responseText),e.body;var p=4!==Math.floor(t/100);if(p)return h+=1,g();i("unrecoverable error");var f=new c.AlgoliaSearchError(e.body&&e.body.message,{debugData:m,statusCode:t});return d._promise.reject(f)}function v(e){i("error: %s, stack: %s",e.message,e.stack);var o=new Date;return m.push({currentHost:x,headers:a(n),content:r||null,contentLength:void 0!==r?r.length:null,method:u.method,timeout:u.timeout,url:u.url,startTime:_,endTime:o,duration:o-_}),e instanceof c.AlgoliaSearchError||(e=new c.Unknown(e&&e.message,e)),h+=1,e instanceof c.Unknown||e instanceof c.UnparsableJSON||h>=d.hosts[t.hostType].length&&(f||!y)?(e.debugData=m,d._promise.reject(e)):e instanceof c.RequestTimeout?b():g()}function g(){return i("retrying request"),d.hostIndex[t.hostType]=(d.hostIndex[t.hostType]+1)%d.hosts[t.hostType].length,o(e,u)}function b(){return i("retrying request with higher timeout"),d.hostIndex[t.hostType]=(d.hostIndex[t.hostType]+1)%d.hosts[t.hostType].length,u.timeout=d.requestTimeout*(h+1),o(e,u)}var w,_=new Date;if(d._useCache&&(w=t.url),d._useCache&&r&&(w+="_body_"+u.body),d._useCache&&l&&void 0!==l[w])return i("serving response from cache"),d._promise.resolve(JSON.parse(l[w]));if(h>=d.hosts[t.hostType].length)return!y||f?(i("could not get any response"),d._promise.reject(new c.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+d.applicationID,{debugData:m}))):(i("switching to fallback"),h=0,u.method=t.fallback.method,u.url=t.fallback.url,u.jsonBody=t.fallback.body,u.jsonBody&&(u.body=s(u.jsonBody)),n=d._computeRequestHeaders(),u.timeout=d.requestTimeout*(h+1),d.hostIndex[t.hostType]=0,f=!0,o(d._request.fallback,u));var x=d.hosts[t.hostType][d.hostIndex[t.hostType]],T=x+u.url,j={body:u.body,jsonBody:u.jsonBody,method:u.method,headers:n,timeout:u.timeout,debug:i};return i("method: %s, url: %s, headers: %j, timeout: %d",j.method,T,j.headers,j.timeout),e===d._request.fallback&&i("using fallback"),e.call(d,T,j).then(p,v)}var r,n,i=e(3)("algoliasearch:"+t.url),l=t.cache,d=this,h=0,f=!1,y=d._useFallback&&d._request.fallback&&t.fallback;this.apiKey.length>p&&void 0!==t.body&&void 0!==t.body.params?(t.body.apiKey=this.apiKey,n=this._computeRequestHeaders(!1)):n=this._computeRequestHeaders(),void 0!==t.body&&(r=s(t.body)),i("request start");var m=[],v=o(d._request,{url:t.url,method:t.method,body:r,jsonBody:t.body,timeout:d.requestTimeout*(h+1)});return t.callback?void v.then(function(e){u(function(){t.callback(null,e)},d._setTimeout||setTimeout)},function(e){u(function(){t.callback(e)},d._setTimeout||setTimeout)}):v},r.prototype._getSearchParams=function(e,t){if(void 0===e||null===e)return t;for(var o in e)null!==o&&void 0!==e[o]&&e.hasOwnProperty(o)&&(t+=""===t?"":"&",t+=o+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[o])?s(e[o]):e[o]));return t},r.prototype._computeRequestHeaders=function(t){var o=e(7),r={"x-algolia-agent":this._ua,"x-algolia-application-id":this.applicationID};return t!==!1&&(r["x-algolia-api-key"]=this.apiKey),this.userToken&&(r["x-algolia-usertoken"]=this.userToken),this.securityTags&&(r["x-algolia-tagfilters"]=this.securityTags),this.extraHeaders&&o(this.extraHeaders,function(e){r[e.name]=e.value}),r},r.prototype.search=function(t,o,r){var n=e(10),s=e(29),i="Usage: client.search(arrayOfQueries[, callback])";if(!n(t))throw new Error(i);"function"==typeof o?(r=o,o={}):void 0===o&&(o={});var a=this,c={requests:s(t,function(e){var t="";return void 0!==e.query&&(t+="query="+encodeURIComponent(e.query)),{indexName:e.indexName,params:a._getSearchParams(e.params,t)}})},u=s(c.requests,function(e,t){return t+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(e.indexName)+"?"+e.params)}).join("&"),l="/1/indexes/*/queries";return void 0!==o.strategy&&(l+="?strategy="+o.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:l,body:c,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:u}},callback:r})},r.prototype.setSecurityTags=function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var t=[],o=0;o<e.length;++o)if("[object Array]"===Object.prototype.toString.call(e[o])){for(var r=[],n=0;n<e[o].length;++n)r.push(e[o][n]);t.push("("+r.join(",")+")")}else t.push(e[o]);e=t.join(",")}this.securityTags=e},r.prototype.setUserToken=function(e){this.userToken=e},r.prototype.clearCache=function(){this.cache={}},r.prototype.setRequestTimeout=function(e){e&&(this.requestTimeout=parseInt(e,10))}},{10:10,16:16,24:24,27:27,28:28,29:29,3:3,7:7}],14:[function(e,t,o){function r(){s.apply(this,arguments)}var n=e(9),s=e(16),i=e(25),a=e(26),c=e(28),u=e(27);t.exports=r,n(r,s),r.prototype.addObject=function(e,t,o){var r=this;return 1!==arguments.length&&"function"!=typeof t||(o=t,
|
3
|
-
t=void 0),this.as._jsonRequest({method:void 0!==t?"PUT":"POST",url:"/1/indexes/"+encodeURIComponent(r.indexName)+(void 0!==t?"/"+encodeURIComponent(t):""),body:e,hostType:"write",callback:o})},r.prototype.addObjects=function(t,o){var r=e(10),n="Usage: index.addObjects(arrayOfObjects[, callback])";if(!r(t))throw new Error(n);for(var s=this,i={requests:[]},a=0;a<t.length;++a){var c={action:"addObject",body:t[a]};i.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(s.indexName)+"/batch",body:i,hostType:"write",callback:o})},r.prototype.partialUpdateObject=function(e,t,o){1!==arguments.length&&"function"!=typeof t||(o=t,t=void 0);var r=this,n="/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(e.objectID)+"/partial";return t===!1&&(n+="?createIfNotExists=false"),this.as._jsonRequest({method:"POST",url:n,body:e,hostType:"write",callback:o})},r.prototype.partialUpdateObjects=function(t,o){var r=e(10),n="Usage: index.partialUpdateObjects(arrayOfObjects[, callback])";if(!r(t))throw new Error(n);for(var s=this,i={requests:[]},a=0;a<t.length;++a){var c={action:"partialUpdateObject",objectID:t[a].objectID,body:t[a]};i.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(s.indexName)+"/batch",body:i,hostType:"write",callback:o})},r.prototype.saveObject=function(e,t){var o=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/"+encodeURIComponent(e.objectID),body:e,hostType:"write",callback:t})},r.prototype.saveObjects=function(t,o){var r=e(10),n="Usage: index.saveObjects(arrayOfObjects[, callback])";if(!r(t))throw new Error(n);for(var s=this,i={requests:[]},a=0;a<t.length;++a){var c={action:"updateObject",objectID:t[a].objectID,body:t[a]};i.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(s.indexName)+"/batch",body:i,hostType:"write",callback:o})},r.prototype.deleteObject=function(e,t){if("function"==typeof e||"string"!=typeof e&&"number"!=typeof e){var o=new u.AlgoliaSearchError("Cannot delete an object without an objectID");return t=e,"function"==typeof t?t(o):this.as._promise.reject(o)}var r=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(e),hostType:"write",callback:t})},r.prototype.deleteObjects=function(t,o){var r=e(10),n=e(29),s="Usage: index.deleteObjects(arrayOfObjectIDs[, callback])";if(!r(t))throw new Error(s);var i=this,a={requests:n(t,function(e){return{action:"deleteObject",objectID:e,body:{objectID:e}}})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(i.indexName)+"/batch",body:a,hostType:"write",callback:o})},r.prototype.deleteByQuery=function(t,o,r){function n(e){if(0===e.nbHits)return e;var t=p(e.hits,function(e){return e.objectID});return d.deleteObjects(t).then(s).then(i)}function s(e){return d.waitTask(e.taskID)}function i(){return d.deleteByQuery(t,o)}function a(){c(function(){r(null)},h._setTimeout||setTimeout)}function u(e){c(function(){r(e)},h._setTimeout||setTimeout)}var l=e(24),p=e(29),d=this,h=d.as;1===arguments.length||"function"==typeof o?(r=o,o={}):o=l(o),o.attributesToRetrieve="objectID",o.hitsPerPage=1e3,o.distinct=!1,this.clearCache();var f=this.search(t,o).then(n);return r?void f.then(a,u):f},r.prototype.browseAll=function(t,o){function r(e){if(!a._stopped){var t;t=void 0!==e?"cursor="+encodeURIComponent(e):l,c._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(u.indexName)+"/browse?"+t,hostType:"read",callback:n})}}function n(e,t){if(!a._stopped)return e?void a._error(e):(a._result(t),void 0===t.cursor?void a._end():void r(t.cursor))}"object"==typeof t&&(o=t,t=void 0);var s=e(30),i=e(15),a=new i,c=this.as,u=this,l=c._getSearchParams(s({},o||{},{query:t}),"");return r(),a},r.prototype.ttAdapter=function(e){var t=this;return function(o,r,n){var s;s="function"==typeof n?n:r,t.search(o,e,function(e,t){return e?void s(e):void s(t.hits)})}},r.prototype.waitTask=function(e,t){function o(){return l._jsonRequest({method:"GET",hostType:"read",url:"/1/indexes/"+encodeURIComponent(u.indexName)+"/task/"+e}).then(function(e){a++;var t=s*a*a;return t>i&&(t=i),"published"!==e.status?l._promise.delay(t).then(o):e})}function r(e){c(function(){t(null,e)},l._setTimeout||setTimeout)}function n(e){c(function(){t(e)},l._setTimeout||setTimeout)}var s=100,i=5e3,a=0,u=this,l=u.as,p=o();return t?void p.then(r,n):p},r.prototype.clearIndex=function(e){var t=this;return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/clear",hostType:"write",callback:e})},r.prototype.getSettings=function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/settings?getVersion=2",hostType:"read",callback:e})},r.prototype.searchSynonyms=function(e,t){return"function"==typeof e?(t=e,e={}):void 0===e&&(e={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/search",body:e,hostType:"read",callback:t})},r.prototype.saveSynonym=function(e,t,o){return"function"==typeof t?(o=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e.objectID)+"?forwardToSlaves="+(t.forwardToSlaves?"true":"false"),body:e,hostType:"write",callback:o})},r.prototype.getSynonym=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e),hostType:"read",callback:t})},r.prototype.deleteSynonym=function(e,t,o){return"function"==typeof t?(o=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e)+"?forwardToSlaves="+(t.forwardToSlaves?"true":"false"),hostType:"write",callback:o})},r.prototype.clearSynonyms=function(e,t){return"function"==typeof e?(t=e,e={}):void 0===e&&(e={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/clear?forwardToSlaves="+(e.forwardToSlaves?"true":"false"),hostType:"write",callback:t})},r.prototype.batchSynonyms=function(e,t,o){return"function"==typeof t?(o=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/batch?forwardToSlaves="+(t.forwardToSlaves?"true":"false")+"&replaceExistingSynonyms="+(t.replaceExistingSynonyms?"true":"false"),hostType:"write",body:e,callback:o})},r.prototype.setSettings=function(e,t,o){1!==arguments.length&&"function"!=typeof t||(o=t,t={});var r=t.forwardToSlaves||!1,n=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/settings?forwardToSlaves="+(r?"true":"false"),hostType:"write",body:e,callback:o})},r.prototype.listUserKeys=function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/keys",hostType:"read",callback:e})},r.prototype.getUserKeyACL=function(e,t){var o=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/keys/"+e,hostType:"read",callback:t})},r.prototype.deleteUserKey=function(e,t){var o=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/keys/"+e,hostType:"write",callback:t})},r.prototype.addUserKey=function(t,o,r){var n=e(10),s="Usage: index.addUserKey(arrayOfAcls[, params, callback])";if(!n(t))throw new Error(s);1!==arguments.length&&"function"!=typeof o||(r=o,o=null);var i={acl:t};return o&&(i.validity=o.validity,i.maxQueriesPerIPPerHour=o.maxQueriesPerIPPerHour,i.maxHitsPerQuery=o.maxHitsPerQuery,i.description=o.description,o.queryParameters&&(i.queryParameters=this.as._getSearchParams(o.queryParameters,"")),i.referers=o.referers),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys",body:i,hostType:"write",callback:r})},r.prototype.addUserKeyWithValidity=i(function(e,t,o){return this.addUserKey(e,t,o)},a("index.addUserKeyWithValidity()","index.addUserKey()")),r.prototype.updateUserKey=function(t,o,r,n){var s=e(10),i="Usage: index.updateUserKey(key, arrayOfAcls[, params, callback])";if(!s(o))throw new Error(i);2!==arguments.length&&"function"!=typeof r||(n=r,r=null);var a={acl:o};return r&&(a.validity=r.validity,a.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,a.maxHitsPerQuery=r.maxHitsPerQuery,a.description=r.description,r.queryParameters&&(a.queryParameters=this.as._getSearchParams(r.queryParameters,"")),a.referers=r.referers),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys/"+t,body:a,hostType:"write",callback:n})}},{10:10,15:15,16:16,24:24,25:25,26:26,27:27,28:28,29:29,30:30,9:9}],15:[function(e,t,o){"use strict";function r(){}t.exports=r;var n=e(9),s=e(6).EventEmitter;n(r,s),r.prototype.stop=function(){this._stopped=!0,this._clean()},r.prototype._end=function(){this.emit("end"),this._clean()},r.prototype._error=function(e){this.emit("error",e),this._clean()},r.prototype._result=function(e){this.emit("result",e)},r.prototype._clean=function(){this.removeAllListeners("stop"),this.removeAllListeners("end"),this.removeAllListeners("error"),this.removeAllListeners("result")}},{6:6,9:9}],16:[function(e,t,o){function r(e,t){this.indexName=t,this.as=e,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}var n=e(23);t.exports=r,r.prototype.clearCache=function(){this.cache={}},r.prototype.search=n("query"),r.prototype.similarSearch=n("similarQuery"),r.prototype.browse=function(t,o,r){var n,s,i=e(30),a=this;0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(n=0,r=arguments[0],t=void 0):"number"==typeof arguments[0]?(n=arguments[0],"number"==typeof arguments[1]?s=arguments[1]:"function"==typeof arguments[1]&&(r=arguments[1],s=void 0),t=void 0,o=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(r=arguments[1]),o=arguments[0],t=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(r=arguments[1],o=void 0),o=i({},o||{},{page:n,hitsPerPage:s,query:t});var c=this.as._getSearchParams(o,"");return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(a.indexName)+"/browse?"+c,hostType:"read",callback:r})},r.prototype.browseFrom=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse?cursor="+encodeURIComponent(e),hostType:"read",callback:t})},r.prototype._search=function(e,t,o){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:o})},r.prototype.getObject=function(e,t,o){var r=this;1!==arguments.length&&"function"!=typeof t||(o=t,t=void 0);var n="";if(void 0!==t){n="?attributes=";for(var s=0;s<t.length;++s)0!==s&&(n+=","),n+=t[s]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(e)+n,hostType:"read",callback:o})},r.prototype.getObjects=function(t,o,r){var n=e(10),s=e(29),i="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!n(t))throw new Error(i);var a=this;1!==arguments.length&&"function"!=typeof o||(r=o,o=void 0);var c={requests:s(t,function(e){var t={indexName:a.indexName,objectID:e};return o&&(t.attributesToRetrieve=o.join(",")),t})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:c,callback:r})},r.prototype.as=null,r.prototype.indexName=null,r.prototype.typeAheadArgs=null,r.prototype.typeAheadValueOption=null},{10:10,23:23,29:29,30:30}],17:[function(e,t,o){(function(t){"use strict";var o=e(9),r=e(7),n=e(12),s=e(27),i=e(21),a=e(22),c=e(31);window.algoliasearch=e(18),"debug"===t.env.NODE_ENV&&e(3).enable("algoliasearch*"),window.angular.module("algoliasearch",[]).service("algolia",["$http","$q","$timeout",function(t,u,l){function p(t,o,r){var n=e(24),s=e(20);return r=n(r||{}),void 0===r.protocol&&(r.protocol=s()),r._ua=r._ua||p.ua,new d(t,o,r)}function d(){n.apply(this,arguments)}return p.version=e(32),p.ua="Algolia for AngularJS "+p.version,p.initPlaces=c(p),window.__algolia={debug:e(3),algoliasearch:p},o(d,n),d.prototype._request=function(e,o){function n(e){h({statusCode:e.status,headers:e.headers,body:JSON.parse(e.data),responseText:e.data})}function a(e){return e}function c(e){if(!p)return 0===e.status?void f(new s.Network({more:e})):void h({body:JSON.parse(e.data),statusCode:e.status})}var p,d=u.defer(),h=d.resolve,f=d.reject,y=o.body;e=i(e,o.headers);var m=u.defer(),v=m.promise;l(function(){p=!0,m.resolve("test"),f(new s.RequestTimeout)},o.timeout);var g={};return r(t.defaults.headers.common,function(e,t){g[t]=void 0}),g.accept="application/json",y&&("POST"===o.method?g["content-type"]="application/x-www-form-urlencoded":g["content-type"]="application/json"),t({url:e,method:o.method,data:y,cache:!1,timeout:v,headers:g,transformResponse:a,withCredentials:!1}).then(n,c),d.promise},d.prototype._request.fallback=function(e,t){e=i(e,t.headers);var o=u.defer(),r=o.resolve,n=o.reject;return a(e,t,function(e,t){return e?void n(e):void r(t)}),o.promise},d.prototype._promise={reject:function(e){return u.reject(e)},resolve:function(e){return u.when(e)},delay:function(e){var t=u.defer(),o=t.resolve;return l(o,e),t.promise}},{Client:function(e,t,o){return p(e,t,o)},ua:p.ua,version:p.version}}])}).call(this,e(2))},{12:12,18:18,2:2,20:20,21:21,22:22,24:24,27:27,3:3,31:31,32:32,7:7,9:9}],18:[function(e,t,o){"use strict";var r=e(12),n=e(19);t.exports=n(r)},{12:12,19:19}],19:[function(e,t,o){(function(o){"use strict";var r=e(8),n=r.Promise||e(5).Promise;t.exports=function(t,s){function i(t,o,r){var n=e(24),s=e(20);return r=n(r||{}),void 0===r.protocol&&(r.protocol=s()),r._ua=r._ua||i.ua,new a(t,o,r)}function a(){t.apply(this,arguments)}var c=e(9),u=e(27),l=e(21),p=e(22),d=e(31);s=s||"","debug"===o.env.NODE_ENV&&e(3).enable("algoliasearch*"),i.version=e(32),i.ua="Algolia for vanilla JavaScript "+s+i.version,i.initPlaces=d(i),r.__algolia={debug:e(3),algoliasearch:i};var h={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};return h.hasXMLHttpRequest&&(h.cors="withCredentials"in new XMLHttpRequest,h.timeout="timeout"in new XMLHttpRequest),c(a,t),a.prototype._request=function(e,t){return new n(function(o,r){function n(){if(!c){h.timeout||clearTimeout(a);var e;try{e={body:JSON.parse(d.responseText),responseText:d.responseText,statusCode:d.status,headers:d.getAllResponseHeaders&&d.getAllResponseHeaders()||{}}}catch(t){e=new u.UnparsableJSON({more:d.responseText})}e instanceof u.UnparsableJSON?r(e):o(e)}}function s(e){c||(h.timeout||clearTimeout(a),r(new u.Network({more:e})))}function i(){h.timeout||(c=!0,d.abort()),r(new u.RequestTimeout)}if(!h.cors&&!h.hasXDomainRequest)return void r(new u.Network("CORS not supported"));e=l(e,t.headers);var a,c,p=t.body,d=h.cors?new XMLHttpRequest:new XDomainRequest;d instanceof XMLHttpRequest?d.open(t.method,e,!0):d.open(t.method,e),h.cors&&(p&&("POST"===t.method?d.setRequestHeader("content-type","application/x-www-form-urlencoded"):d.setRequestHeader("content-type","application/json")),d.setRequestHeader("accept","application/json")),d.onprogress=function(){},d.onload=n,d.onerror=s,h.timeout?(d.timeout=t.timeout,d.ontimeout=i):a=setTimeout(i,t.timeout),d.send(p)})},a.prototype._request.fallback=function(e,t){return e=l(e,t.headers),new n(function(o,r){p(e,t,function(e,t){return e?void r(e):void o(t)})})},a.prototype._promise={reject:function(e){return n.reject(e)},resolve:function(e){return n.resolve(e)},delay:function(e){return new n(function(t){setTimeout(t,e)})}},i}}).call(this,e(2))},{2:2,20:20,21:21,22:22,24:24,27:27,3:3,31:31,32:32,5:5,8:8,9:9}],20:[function(e,t,o){"use strict";function r(){var e=window.document.location.protocol;return"http:"!==e&&"https:"!==e&&(e="http:"),e}t.exports=r},{}],21:[function(e,t,o){"use strict";function r(e,t){return e+=/\?/.test(e)?"&":"?",e+n(t)}t.exports=r;var n=e(11)},{11:11}],22:[function(e,t,o){"use strict";function r(e,t,o){function r(){t.debug("JSONP: success"),m||d||(m=!0,p||(t.debug("JSONP: Fail. Script loaded but did not call the callback"),a(),o(new n.JSONPScriptFail)))}function i(){"loaded"!==this.readyState&&"complete"!==this.readyState||r()}function a(){clearTimeout(v),f.onload=null,f.onreadystatechange=null,f.onerror=null,h.removeChild(f)}function c(){try{delete window[y],delete window[y+"_loaded"]}catch(e){window[y]=window[y+"_loaded"]=void 0}}function u(){t.debug("JSONP: Script timeout"),d=!0,a(),o(new n.RequestTimeout)}function l(){t.debug("JSONP: Script error"),m||d||(a(),o(new n.JSONPScriptError))}if("GET"!==t.method)return void o(new Error("Method "+t.method+" "+e+" is not supported by JSONP."));t.debug("JSONP: start");var p=!1,d=!1;s+=1;var h=document.getElementsByTagName("head")[0],f=document.createElement("script"),y="algoliaJSONP_"+s,m=!1;window[y]=function(e){return c(),d?void t.debug("JSONP: Late answer, ignoring"):(p=!0,a(),void o(null,{body:e}))},e+="&callback="+y,t.jsonBody&&t.jsonBody.params&&(e+="&"+t.jsonBody.params);var v=setTimeout(u,t.timeout);f.onreadystatechange=i,f.onload=r,f.onerror=l,f.async=!0,f.defer=!0,f.src=e,h.appendChild(f)}t.exports=r;var n=e(27),s=0},{27:27}],23:[function(e,t,o){function r(e,t){return function(o,r,s){if("function"==typeof o&&"object"==typeof r||"object"==typeof s)throw new n.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof o?(s=o,o=""):1!==arguments.length&&"function"!=typeof r||(s=r,r=void 0),"object"==typeof o&&null!==o?(r=o,o=void 0):void 0!==o&&null!==o||(o="");var i="";return void 0!==o&&(i+=e+"="+encodeURIComponent(o)),void 0!==r&&(i=this.as._getSearchParams(r,i)),this._search(i,t,s)}}t.exports=r;var n=e(27)},{27:27}],24:[function(e,t,o){t.exports=function(e){return JSON.parse(JSON.stringify(e))}},{}],25:[function(e,t,o){t.exports=function(e,t){function o(){return r||(console.log(t),r=!0),e.apply(this,arguments)}var r=!1;return o}},{}],26:[function(e,t,o){t.exports=function(e,t){var o=e.toLowerCase().replace(".","").replace("()","");return"algoliasearch: `"+e+"` was replaced by `"+t+"`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#"+o}},{}],27:[function(e,t,o){"use strict";function r(t,o){var r=e(7),n=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):n.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=t||"Unknown error",o&&r(o,function(e,t){n[t]=e})}function n(e,t){function o(){var o=Array.prototype.slice.call(arguments,0);"string"!=typeof o[0]&&o.unshift(t),r.apply(this,o),this.name="AlgoliaSearch"+e+"Error"}return s(o,r),o}var s=e(9);s(r,Error),t.exports={AlgoliaSearchError:r,UnparsableJSON:n("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:n("RequestTimeout","Request timedout before getting a response"),Network:n("Network","Network issue, see err.more for details"),JSONPScriptFail:n("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:n("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:n("Unknown","Unknown error occured")}},{7:7,9:9}],28:[function(e,t,o){t.exports=function(e,t){t(e,0)}},{}],29:[function(e,t,o){var r=e(7);t.exports=function(e,t){var o=[];return r(e,function(r,n){o.push(t(r,n,e))}),o}},{7:7}],30:[function(e,t,o){var r=e(7);t.exports=function n(e){var t=Array.prototype.slice.call(arguments);return r(t,function(t){for(var o in t)t.hasOwnProperty(o)&&("object"==typeof e[o]&&"object"==typeof t[o]?e[o]=n({},e[o],t[o]):void 0!==t[o]&&(e[o]=t[o]))}),e}},{7:7}],31:[function(e,t,o){function r(t){return function(o,r,s){var i=e(24);s=s&&i(s)||{},s.hosts=s.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof o&&void 0!==o||(o="",r="",s._allowEmptyCredentials=!0);var a=t(o,r,s),c=a.initIndex("places");return c.search=n("query","/1/places/query"),c}}t.exports=r;var n=e(23)},{23:23,24:24}],32:[function(e,t,o){"use strict";t.exports="3.18.0"},{}]},{},[17]);
|
1
|
+
/*! algoliasearch 3.20.3 | © 2014, 2015 Algolia SAS | github.com/algolia/algoliasearch-client-js */
|
2
|
+
!function(e){var t;"undefined"!=typeof window?t=window:"undefined"!=typeof self&&(t=self),t.ALGOLIA_MIGRATION_LAYER=e()}(function(){return function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var c="function"==typeof require&&require;if(!a&&c)return c(s,!0);if(i)return i(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return o(r?r:e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(e,t,r){function n(e,t){for(var r in t)e.setAttribute(r,t[r])}function o(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function i(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}t.exports=function(e,t,r){var s=document.head||document.getElementsByTagName("head")[0],a=document.createElement("script");"function"==typeof t&&(r=t,t={}),t=t||{},r=r||function(){},a.type=t.type||"text/javascript",a.charset=t.charset||"utf8",a.async=!("async"in t)||!!t.async,a.src=e,t.attrs&&n(a,t.attrs),t.text&&(a.text=""+t.text);var c="onload"in a?o:i;c(a,r),a.onload||o(a,r),s.appendChild(a)}},{}],2:[function(e,t,r){"use strict";function n(e){for(var t=new RegExp("cdn\\.jsdelivr\\.net/algoliasearch/latest/"+e.replace(".","\\.")+"(?:\\.min)?\\.js$"),r=document.getElementsByTagName("script"),n=!1,o=0,i=r.length;o<i;o++)if(r[o].src&&t.test(r[o].src)){n=!0;break}return n}t.exports=n},{}],3:[function(e,t,r){"use strict";function n(t){var r=e(1),n="//cdn.jsdelivr.net/algoliasearch/2/"+t+".min.js",i="-- AlgoliaSearch `latest` warning --\nWarning, you are using the `latest` version string from jsDelivr to load the AlgoliaSearch library.\nUsing `latest` is no more recommended, you should load //cdn.jsdelivr.net/algoliasearch/2/algoliasearch.min.js\n\nAlso, we updated the AlgoliaSearch JavaScript client to V3. If you want to upgrade,\nplease read our migration guide at https://github.com/algolia/algoliasearch-client-js/wiki/Migration-guide-from-2.x.x-to-3.x.x\n-- /AlgoliaSearch `latest` warning --";window.console&&(window.console.warn?window.console.warn(i):window.console.log&&window.console.log(i));try{document.write("<script>window.ALGOLIA_SUPPORTS_DOCWRITE = true</script>"),window.ALGOLIA_SUPPORTS_DOCWRITE===!0?(document.write('<script src="'+n+'"></script>'),o("document.write")()):r(n,o("DOMElement"))}catch(s){r(n,o("DOMElement"))}}function o(e){return function(){var t="AlgoliaSearch: loaded V2 script using "+e;window.console&&window.console.log&&window.console.log(t)}}t.exports=n},{1:1}],4:[function(e,t,r){"use strict";function n(){var e="-- AlgoliaSearch V2 => V3 error --\nYou are trying to use a new version of the AlgoliaSearch JavaScript client with an old notation.\nPlease read our migration guide at https://github.com/algolia/algoliasearch-client-js/wiki/Migration-guide-from-2.x.x-to-3.x.x\n-- /AlgoliaSearch V2 => V3 error --";window.AlgoliaSearch=function(){throw new Error(e)},window.AlgoliaSearchHelper=function(){throw new Error(e)},window.AlgoliaExplainResults=function(){throw new Error(e)}}t.exports=n},{}],5:[function(e,t,r){"use strict";function n(t){var r=e(2),n=e(3),o=e(4);r(t)?n(t):o()}n("algoliasearch.angular")},{2:2,3:3,4:4}]},{},[5])(5)}),function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var c="function"==typeof require&&require;if(!a&&c)return c(s,!0);if(i)return i(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return o(r?r:e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(e,t,r){(function(n){function o(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),!t)return e;var n="color: "+this.color;e=[e[0],n,"color: inherit"].concat(Array.prototype.slice.call(e,1));var o=0,i=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(i=o))}),e.splice(i,0,n),e}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(t){}}function c(){try{return r.storage.debug}catch(e){}if("undefined"!=typeof n&&"env"in n)return n.env.DEBUG}function u(){try{return window.localStorage}catch(e){}}r=t.exports=e(2),r.log=s,r.formatArgs=i,r.save=a,r.load=c,r.useColors=o,r.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),r.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},r.enable(c())}).call(this,e(12))},{12:12,2:2}],2:[function(e,t,r){function n(){return r.colors[l++%r.colors.length]}function o(e){function t(){}function o(){var e=o,t=+new Date,i=t-(u||t);e.diff=i,e.prev=u,e.curr=t,u=t,null==e.useColors&&(e.useColors=r.useColors()),null==e.color&&e.useColors&&(e.color=n());for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];s[0]=r.coerce(s[0]),"string"!=typeof s[0]&&(s=["%o"].concat(s));var c=0;s[0]=s[0].replace(/%([a-z%])/g,function(t,n){if("%%"===t)return t;c++;var o=r.formatters[n];if("function"==typeof o){var i=s[c];t=o.call(e,i),s.splice(c,1),c--}return t}),s=r.formatArgs.apply(e,s);var l=o.log||r.log||console.log.bind(console);l.apply(e,s)}t.enabled=!1,o.enabled=!0;var i=r.enabled(e)?o:t;return i.namespace=e,i}function i(e){r.save(e);for(var t=(e||"").split(/[\s,]+/),n=t.length,o=0;o<n;o++)t[o]&&(e=t[o].replace(/[\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*?"),"-"===e[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")))}function s(){r.enable("")}function a(e){var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}r=t.exports=o.debug=o,r.coerce=c,r.disable=s,r.enable=i,r.enabled=a,r.humanize=e(9),r.names=[],r.skips=[],r.formatters={};var u,l=0},{9:9}],3:[function(e,t,r){(function(n,o){!function(e,n){"object"==typeof r&&"undefined"!=typeof t?t.exports=n():"function"==typeof define&&define.amd?define(n):e.ES6Promise=n()}(this,function(){"use strict";function t(e){return"function"==typeof e||"object"==typeof e&&null!==e}function r(e){return"function"==typeof e}function i(e){X=e}function s(e){W=e}function a(){return function(){return n.nextTick(h)}}function c(){return"undefined"!=typeof V?function(){V(h)}:p()}function u(){var e=0,t=new Z(h),r=document.createTextNode("");return t.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}function l(){var e=new MessageChannel;return e.port1.onmessage=h,function(){return e.port2.postMessage(0)}}function p(){var e=setTimeout;return function(){return e(h,1)}}function h(){for(var e=0;e<G;e+=2){var t=re[e],r=re[e+1];t(r),re[e]=void 0,re[e+1]=void 0}G=0}function d(){try{var t=e,r=t("vertx");return V=r.runOnLoop||r.runOnContext,c()}catch(n){return p()}}function f(e,t){var r=arguments,n=this,o=new this.constructor(m);void 0===o[oe]&&C(o);var i=n._state;return i?!function(){var e=r[i-1];W(function(){return P(i,o,e,n._result)})}():O(n,o,e,t),o}function y(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var r=new t(m);return j(r,e),r}function m(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function g(){return new TypeError("A promises callback cannot return that same promise.")}function b(e){try{return e.then}catch(t){return ce.error=t,ce}}function w(e,t,r,n){try{e.call(t,r,n)}catch(o){return o}}function _(e,t,r){W(function(e){var n=!1,o=w(r,t,function(r){n||(n=!0,t!==r?j(e,r):I(e,r))},function(t){n||(n=!0,k(e,t))},"Settle: "+(e._label||" unknown promise"));!n&&o&&(n=!0,k(e,o))},e)}function x(e,t){t._state===se?I(e,t._result):t._state===ae?k(e,t._result):O(t,void 0,function(t){return j(e,t)},function(t){return k(e,t)})}function T(e,t,n){t.constructor===e.constructor&&n===f&&t.constructor.resolve===y?x(e,t):n===ce?k(e,ce.error):void 0===n?I(e,t):r(n)?_(e,t,n):I(e,t)}function j(e,r){e===r?k(e,v()):t(r)?T(e,r,b(r)):I(e,r)}function S(e){e._onerror&&e._onerror(e._result),R(e)}function I(e,t){e._state===ie&&(e._result=t,e._state=se,0!==e._subscribers.length&&W(R,e))}function k(e,t){e._state===ie&&(e._state=ae,e._result=t,W(S,e))}function O(e,t,r,n){var o=e._subscribers,i=o.length;e._onerror=null,o[i]=t,o[i+se]=r,o[i+ae]=n,0===i&&e._state&&W(R,e)}function R(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n=void 0,o=void 0,i=e._result,s=0;s<t.length;s+=3)n=t[s],o=t[s+r],n?P(r,n,o,i):o(i);e._subscribers.length=0}}function A(){this.error=null}function E(e,t){try{return e(t)}catch(r){return ue.error=r,ue}}function P(e,t,n,o){var i=r(n),s=void 0,a=void 0,c=void 0,u=void 0;if(i){if(s=E(n,o),s===ue?(u=!0,a=s.error,s=null):c=!0,t===s)return void k(t,g())}else s=o,c=!0;t._state!==ie||(i&&c?j(t,s):u?k(t,a):e===se?I(t,s):e===ae&&k(t,s))}function q(e,t){try{t(function(t){j(e,t)},function(t){k(e,t)})}catch(r){k(e,r)}}function U(){return le++}function C(e){e[oe]=le++,e._state=void 0,e._result=void 0,e._subscribers=[]}function N(e,t){this._instanceConstructor=e,this.promise=new e(m),this.promise[oe]||C(this.promise),Q(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?I(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&I(this.promise,this._result))):k(this.promise,D())}function D(){return new Error("Array Methods must be provided an Array")}function L(e){return new N(this,e).promise}function H(e){var t=this;return new t(Q(e)?function(r,n){for(var o=e.length,i=0;i<o;i++)t.resolve(e[i]).then(r,n)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function M(e){var t=this,r=new t(m);return k(r,e),r}function J(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function F(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function K(e){this[oe]=U(),this._result=this._state=void 0,this._subscribers=[],m!==e&&("function"!=typeof e&&J(),this instanceof K?q(this,e):F())}function $(){var e=void 0;if("undefined"!=typeof o)e=o;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var r=e.Promise;if(r){var n=null;try{n=Object.prototype.toString.call(r.resolve())}catch(t){}if("[object Promise]"===n&&!r.cast)return}e.Promise=K}var B=void 0;B=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var Q=B,G=0,V=void 0,X=void 0,W=function(e,t){re[G]=e,re[G+1]=t,G+=2,2===G&&(X?X(h):ne())},Y="undefined"!=typeof window?window:void 0,z=Y||{},Z=z.MutationObserver||z.WebKitMutationObserver,ee="undefined"==typeof self&&"undefined"!=typeof n&&"[object process]"==={}.toString.call(n),te="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,re=new Array(1e3),ne=void 0;ne=ee?a():Z?u():te?l():void 0===Y&&"function"==typeof e?d():p();var oe=Math.random().toString(36).substring(16),ie=void 0,se=1,ae=2,ce=new A,ue=new A,le=0;return N.prototype._enumerate=function(){for(var e=this.length,t=this._input,r=0;this._state===ie&&r<e;r++)this._eachEntry(t[r],r)},N.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===y){var o=b(e);if(o===f&&e._state!==ie)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(r===K){var i=new r(m);T(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new r(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},N.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===ie&&(this._remaining--,e===ae?k(n,r):this._result[t]=r),0===this._remaining&&I(n,this._result)},N.prototype._willSettleAt=function(e,t){var r=this;O(e,void 0,function(e){return r._settledAt(se,t,e)},function(e){return r._settledAt(ae,t,e)})},K.all=L,K.race=H,K.resolve=y,K.reject=M,K._setScheduler=i,K._setAsap=s,K._asap=W,K.prototype={constructor:K,then:f,"catch":function(e){return this.then(null,e)}},K.polyfill=$,K.Promise=K,K})}).call(this,e(12),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],4:[function(e,t,r){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function o(e){return"function"==typeof e}function i(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if(!i(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,r,n,i,c,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}if(r=this._events[e],a(r))return!1;if(o(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:i=Array.prototype.slice.call(arguments,1),r.apply(this,i)}else if(s(r))for(i=Array.prototype.slice.call(arguments,1),u=r.slice(),n=u.length,c=0;c<n;c++)u[c].apply(this,i);return!0},n.prototype.addListener=function(e,t){var r;if(!o(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,o(t.listener)?t.listener:t),this._events[e]?s(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,s(this._events[e])&&!this._events[e].warned&&(r=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,r&&r>0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!o(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var r,n,i,a;if(!o(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],i=r.length,n=-1,r===t||o(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(a=i;a-- >0;)if(r[a]===t||r[a].listener&&r[a].listener===t){n=a;break}if(n<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],o(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?o(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(o(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},{}],5:[function(e,t,r){var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString;t.exports=function(e,t,r){if("[object Function]"!==o.call(t))throw new TypeError("iterator must be a function");var i=e.length;if(i===+i)for(var s=0;s<i;s++)t.call(r,e[s],s,e);else for(var a in e)n.call(e,a)&&t.call(r,e[a],a,e)}},{}],6:[function(e,t,r){(function(e){"undefined"!=typeof window?t.exports=window:"undefined"!=typeof e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],8:[function(e,t,r){var n={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},{}],9:[function(e,t,r){function n(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*p;case"days":case"day":case"d":return r*l;case"hours":case"hour":case"hrs":case"hr":case"h":return r*u;case"minutes":case"minute":case"mins":case"min":case"m":return r*c;case"seconds":case"second":case"secs":case"sec":case"s":return r*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function o(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=c?Math.round(e/c)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function i(e){return s(e,l,"day")||s(e,u,"hour")||s(e,c,"minute")||s(e,a,"second")||e+" ms"}function s(e,t,r){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+r:Math.ceil(e/t)+" "+r+"s"}var a=1e3,c=60*a,u=60*c,l=24*u,p=365.25*l;t.exports=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return n(e);if("number"===r&&isNaN(e)===!1)return t["long"]?i(e):o(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}],10:[function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Array.prototype.slice,s=e(11),a=Object.prototype.propertyIsEnumerable,c=!a.call({toString:null},"toString"),u=a.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(e){var t=e.constructor;return t&&t.prototype===e},h={$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!h["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{p(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),f=function(e){if("undefined"==typeof window||!d)return p(e);try{return p(e)}catch(t){return!1}},y=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===o.call(e),i=s(e),a=t&&"[object String]"===o.call(e),p=[];if(!t&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var h=u&&r;if(a&&e.length>0&&!n.call(e,0))for(var d=0;d<e.length;++d)p.push(String(d));if(i&&e.length>0)for(var y=0;y<e.length;++y)p.push(String(y));else for(var m in e)h&&"prototype"===m||!n.call(e,m)||p.push(String(m));if(c)for(var v=f(e),g=0;g<l.length;++g)v&&"constructor"===l[g]||!n.call(e,l[g])||p.push(l[g]);return p};y.shim=function(){if(Object.keys){var e=function(){return 2===(Object.keys(arguments)||"").length}(1,2);if(!e){var t=Object.keys;Object.keys=function(e){return t(s(e)?i.call(e):e)}}}else Object.keys=y;return Object.keys||y},t.exports=y},{11:11}],11:[function(e,t,r){"use strict";var n=Object.prototype.toString;t.exports=function(e){var t=n.call(e),r="[object Arguments]"===t;return r||(r="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===n.call(e.callee)),r}},{}],12:[function(e,t,r){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(p===setTimeout)return setTimeout(e,0);if((p===n||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}function s(e){if(h===clearTimeout)return clearTimeout(e);if((h===o||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(e);try{return h(e)}catch(t){try{return h.call(null,e)}catch(t){return h.call(this,e)}}}function a(){m&&f&&(m=!1,f.length?y=f.concat(y):v=-1,y.length&&c())}function c(){if(!m){var e=i(a);m=!0;for(var t=y.length;t;){for(f=y,y=[];++v<t;)f&&f[v].run();v=-1,t=y.length}f=null,m=!1,s(e)}}function u(e,t){this.fun=e,this.array=t}function l(){}var p,h,d=t.exports={};!function(){try{p="function"==typeof setTimeout?setTimeout:n}catch(e){p=n}try{h="function"==typeof clearTimeout?clearTimeout:o}catch(e){h=o}}();var f,y=[],m=!1,v=-1;d.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];y.push(new u(e,t)),1!==y.length||m||i(c)},u.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.binding=function(e){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(e){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},{}],13:[function(e,t,r){"use strict";function n(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,a){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?n(s(e),function(s){var a=encodeURIComponent(o(s))+r;return i(e[s])?n(e[s],function(e){return a+encodeURIComponent(o(e))}).join(t):a+encodeURIComponent(o(e[s]))}).join(t):a?encodeURIComponent(o(a))+r+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},{}],14:[function(e,t,r){function n(){c.apply(this,arguments)}function o(){var e="Not implemented in this environment.\nIf you feel this is a mistake, write to support@algolia.com";throw new l.AlgoliaSearchError(e)}t.exports=n;var i=e(16),s=e(27),a=e(28),c=e(15),u=e(7),l=e(29);u(n,c),n.prototype.deleteIndex=function(e,t){return this._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(e),hostType:"write",callback:t})},n.prototype.moveIndex=function(e,t,r){var n={operation:"move",destination:t};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(e)+"/operation",body:n,hostType:"write",callback:r})},n.prototype.copyIndex=function(e,t,r){var n={operation:"copy",destination:t};return this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(e)+"/operation",body:n,hostType:"write",callback:r})},n.prototype.getLogs=function(t,r,n){var o=e(26),i={};return"object"==typeof t?(i=o(t),n=r):0===arguments.length||"function"==typeof t?n=t:1===arguments.length||"function"==typeof r?(n=r,i.offset=t):(i.offset=t,i.length=r),void 0===i.offset&&(i.offset=0),void 0===i.length&&(i.length=10),this._jsonRequest({method:"GET",url:"/1/logs?"+this._getSearchParams(i,""),hostType:"read",callback:n})},n.prototype.listIndexes=function(e,t){var r="";return void 0===e||"function"==typeof e?t=e:r="?page="+e,this._jsonRequest({method:"GET",url:"/1/indexes"+r,hostType:"read",callback:t})},n.prototype.initIndex=function(e){return new i(this,e)},n.prototype.listUserKeys=function(e){return this._jsonRequest({method:"GET",url:"/1/keys",hostType:"read",callback:e})},n.prototype.getUserKeyACL=function(e,t){return this._jsonRequest({method:"GET",url:"/1/keys/"+e,hostType:"read",callback:t})},n.prototype.deleteUserKey=function(e,t){return this._jsonRequest({method:"DELETE",url:"/1/keys/"+e,hostType:"write",callback:t})},n.prototype.addUserKey=function(t,r,n){var o=e(8),i="Usage: client.addUserKey(arrayOfAcls[, params, callback])";if(!o(t))throw new Error(i);1!==arguments.length&&"function"!=typeof r||(n=r,r=null);var s={acl:t};return r&&(s.validity=r.validity,s.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,s.maxHitsPerQuery=r.maxHitsPerQuery,s.indexes=r.indexes,s.description=r.description,r.queryParameters&&(s.queryParameters=this._getSearchParams(r.queryParameters,"")),s.referers=r.referers),this._jsonRequest({method:"POST",url:"/1/keys",body:s,hostType:"write",callback:n})},n.prototype.addUserKeyWithValidity=s(function(e,t,r){return this.addUserKey(e,t,r)},a("client.addUserKeyWithValidity()","client.addUserKey()")),n.prototype.updateUserKey=function(t,r,n,o){var i=e(8),s="Usage: client.updateUserKey(key, arrayOfAcls[, params, callback])";if(!i(r))throw new Error(s);2!==arguments.length&&"function"!=typeof n||(o=n,n=null);var a={acl:r};return n&&(a.validity=n.validity,a.maxQueriesPerIPPerHour=n.maxQueriesPerIPPerHour,a.maxHitsPerQuery=n.maxHitsPerQuery,a.indexes=n.indexes,a.description=n.description,n.queryParameters&&(a.queryParameters=this._getSearchParams(n.queryParameters,"")),a.referers=n.referers),this._jsonRequest({method:"PUT",url:"/1/keys/"+t,body:a,hostType:"write",callback:o})},n.prototype.startQueriesBatch=s(function(){this._batch=[]},a("client.startQueriesBatch()","client.search()")),n.prototype.addQueryInBatch=s(function(e,t,r){this._batch.push({indexName:e,query:t,params:r})},a("client.addQueryInBatch()","client.search()")),n.prototype.sendQueriesBatch=s(function(e){return this.search(this._batch,e)},a("client.sendQueriesBatch()","client.search()")),n.prototype.batch=function(t,r){var n=e(8),o="Usage: client.batch(operations[, callback])";if(!n(t))throw new Error(o);return this._jsonRequest({method:"POST",url:"/1/indexes/*/batch",body:{requests:t},hostType:"write",callback:r})},n.prototype.destroy=o,n.prototype.enableRateLimitForward=o,n.prototype.disableRateLimitForward=o,n.prototype.useSecuredAPIKey=o,n.prototype.disableSecuredAPIKey=o,n.prototype.generateSecuredApiKey=o},{15:15,16:16,26:26,27:27,28:28,29:29,7:7,8:8}],15:[function(e,t,r){(function(r){function n(t,r,n){var i=e(1)("algoliasearch"),s=e(26),a=e(8),u=e(31),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(n._allowEmptyCredentials!==!0&&!t)throw new c.AlgoliaSearchError("Please provide an application ID. "+l);if(n._allowEmptyCredentials!==!0&&!r)throw new c.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=t,this.apiKey=r,this.hosts={read:[],write:[]},n=n||{};var p=n.protocol||"https:";if(this._timeouts=n.timeouts||{connect:1e3,read:2e3,write:3e4},n.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=n.timeout),/:$/.test(p)||(p+=":"),"http:"!==n.protocol&&"https:"!==n.protocol)throw new c.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+n.protocol+"`)");if(this._checkAppIdData(),n.hosts)a(n.hosts)?(this.hosts.read=s(n.hosts),this.hosts.write=s(n.hosts)):(this.hosts.read=s(n.hosts.read),this.hosts.write=s(n.hosts.write));else{var h=u(this._shuffleResult,function(e){return t+"-"+e+".algolianet.com"});this.hosts.read=[this.applicationID+"-dsn.algolia.net"].concat(h),this.hosts.write=[this.applicationID+".algolia.net"].concat(h)}this.hosts.read=u(this.hosts.read,o(p)),this.hosts.write=u(this.hosts.write,o(p)),this.extraHeaders=[],this.cache=n._cache||{},this._ua=n._ua,this._useCache=!(void 0!==n._useCache&&!n._cache)||n._useCache,this._useFallback=void 0===n.useFallback||n.useFallback,this._setTimeout=n._setTimeout,i("init done, %j",this)}function o(e){return function(t){return e+"//"+t.toLowerCase()}}function i(e){if(void 0===Array.prototype.toJSON)return JSON.stringify(e);var t=Array.prototype.toJSON;delete Array.prototype.toJSON;var r=JSON.stringify(e);return Array.prototype.toJSON=t,r}function s(e){for(var t,r,n=e.length;0!==n;)r=Math.floor(Math.random()*n),n-=1,t=e[n],e[n]=e[r],e[r]=t;return e}function a(e){var t={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){var n;n="x-algolia-api-key"===r||"x-algolia-application-id"===r?"**hidden for security purposes**":e[r],t[r]=n}return t}t.exports=n;var c=e(29),u=e(30),l=e(18),p=e(35),h=500,d=r.env.RESET_APP_DATA_TIMER&&parseInt(r.env.RESET_APP_DATA_TIMER,10)||12e4;n.prototype.initIndex=function(e){return new l(this,e)},n.prototype.setExtraHeader=function(e,t){this.extraHeaders.push({name:e.toLowerCase(),value:t})},n.prototype.addAlgoliaAgent=function(e){this._ua.indexOf(";"+e)===-1&&(this._ua+=";"+e)},n.prototype._jsonRequest=function(t){function r(e,u){function h(e){var t=e&&e.body&&e.body.message&&e.body.status||e.statusCode||e&&e.body&&200;s("received response: statusCode: %s, computed statusCode: %d, headers: %j",e.statusCode,t,e.headers);var r=2===Math.floor(t/100),i=new Date;if(m.push({currentHost:x,headers:a(o),content:n||null,contentLength:void 0!==n?n.length:null,method:u.method,timeouts:u.timeouts,url:u.url,startTime:_,endTime:i,duration:i-_,statusCode:t}),r)return p._useCache&&l&&(l[w]=e.responseText),e.body;var h=4!==Math.floor(t/100);if(h)return d+=1,g();s("unrecoverable error");var f=new c.AlgoliaSearchError(e.body&&e.body.message,{debugData:m,statusCode:t});return p._promise.reject(f)}function v(e){s("error: %s, stack: %s",e.message,e.stack);var r=new Date;return m.push({currentHost:x,headers:a(o),content:n||null,contentLength:void 0!==n?n.length:null,method:u.method,timeouts:u.timeouts,url:u.url,startTime:_,endTime:r,duration:r-_}),e instanceof c.AlgoliaSearchError||(e=new c.Unknown(e&&e.message,e)),d+=1,e instanceof c.Unknown||e instanceof c.UnparsableJSON||d>=p.hosts[t.hostType].length&&(f||!y)?(e.debugData=m,p._promise.reject(e)):e instanceof c.RequestTimeout?b():g()}function g(){return s("retrying request"),p._incrementHostIndex(t.hostType),r(e,u)}function b(){return s("retrying request with higher timeout"),p._incrementHostIndex(t.hostType),p._incrementTimeoutMultipler(),u.timeouts=p._getTimeoutsForRequest(t.hostType),r(e,u)}p._checkAppIdData();var w,_=new Date;if(p._useCache&&(w=t.url),p._useCache&&n&&(w+="_body_"+u.body),p._useCache&&l&&void 0!==l[w])return s("serving response from cache"),p._promise.resolve(JSON.parse(l[w]));if(d>=p.hosts[t.hostType].length)return!y||f?(s("could not get any response"),p._promise.reject(new c.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+p.applicationID,{debugData:m}))):(s("switching to fallback"),d=0,u.method=t.fallback.method,u.url=t.fallback.url,
|
3
|
+
u.jsonBody=t.fallback.body,u.jsonBody&&(u.body=i(u.jsonBody)),o=p._computeRequestHeaders(),u.timeouts=p._getTimeoutsForRequest(t.hostType),p._setHostIndexByType(0,t.hostType),f=!0,r(p._request.fallback,u));var x=p._getHostByType(t.hostType),T=x+u.url,j={body:u.body,jsonBody:u.jsonBody,method:u.method,headers:o,timeouts:u.timeouts,debug:s};return s("method: %s, url: %s, headers: %j, timeouts: %d",j.method,T,j.headers,j.timeouts),e===p._request.fallback&&s("using fallback"),e.call(p,T,j).then(h,v)}this._checkAppIdData();var n,o,s=e(1)("algoliasearch:"+t.url),l=t.cache,p=this,d=0,f=!1,y=p._useFallback&&p._request.fallback&&t.fallback;this.apiKey.length>h&&void 0!==t.body&&(void 0!==t.body.params||void 0!==t.body.requests)?(t.body.apiKey=this.apiKey,o=this._computeRequestHeaders(!1)):o=this._computeRequestHeaders(),void 0!==t.body&&(n=i(t.body)),s("request start");var m=[],v=r(p._request,{url:t.url,method:t.method,body:n,jsonBody:t.body,timeouts:p._getTimeoutsForRequest(t.hostType)});return t.callback?void v.then(function(e){u(function(){t.callback(null,e)},p._setTimeout||setTimeout)},function(e){u(function(){t.callback(e)},p._setTimeout||setTimeout)}):v},n.prototype._getSearchParams=function(e,t){if(void 0===e||null===e)return t;for(var r in e)null!==r&&void 0!==e[r]&&e.hasOwnProperty(r)&&(t+=""===t?"":"&",t+=r+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[r])?i(e[r]):e[r]));return t},n.prototype._computeRequestHeaders=function(t){var r=e(5),n={"x-algolia-agent":this._ua,"x-algolia-application-id":this.applicationID};return t!==!1&&(n["x-algolia-api-key"]=this.apiKey),this.userToken&&(n["x-algolia-usertoken"]=this.userToken),this.securityTags&&(n["x-algolia-tagfilters"]=this.securityTags),this.extraHeaders&&r(this.extraHeaders,function(e){n[e.name]=e.value}),n},n.prototype.search=function(t,r,n){var o=e(8),i=e(31),s="Usage: client.search(arrayOfQueries[, callback])";if(!o(t))throw new Error(s);"function"==typeof r?(n=r,r={}):void 0===r&&(r={});var a=this,c={requests:i(t,function(e){var t="";return void 0!==e.query&&(t+="query="+encodeURIComponent(e.query)),{indexName:e.indexName,params:a._getSearchParams(e.params,t)}})},u=i(c.requests,function(e,t){return t+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(e.indexName)+"?"+e.params)}).join("&"),l="/1/indexes/*/queries";return void 0!==r.strategy&&(l+="?strategy="+r.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:l,body:c,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:u}},callback:n})},n.prototype.setSecurityTags=function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var t=[],r=0;r<e.length;++r)if("[object Array]"===Object.prototype.toString.call(e[r])){for(var n=[],o=0;o<e[r].length;++o)n.push(e[r][o]);t.push("("+n.join(",")+")")}else t.push(e[r]);e=t.join(",")}this.securityTags=e},n.prototype.setUserToken=function(e){this.userToken=e},n.prototype.clearCache=function(){this.cache={}},n.prototype.setRequestTimeout=function(e){e&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=e)},n.prototype.setTimeouts=function(e){this._timeouts=e},n.prototype.getTimeouts=function(){return this._timeouts},n.prototype._getAppIdData=function(){var e=p.get(this.applicationID);return null!==e&&this._cacheAppIdData(e),e},n.prototype._setAppIdData=function(e){return e.lastChange=(new Date).getTime(),this._cacheAppIdData(e),p.set(this.applicationID,e)},n.prototype._checkAppIdData=function(){var e=this._getAppIdData(),t=(new Date).getTime();return null===e||t-e.lastChange>d?this._resetInitialAppIdData(e):e},n.prototype._resetInitialAppIdData=function(e){var t=e||{};return t.hostIndexes={read:0,write:0},t.timeoutMultiplier=1,t.shuffleResult=t.shuffleResult||s([1,2,3]),this._setAppIdData(t)},n.prototype._cacheAppIdData=function(e){this._hostIndexes=e.hostIndexes,this._timeoutMultiplier=e.timeoutMultiplier,this._shuffleResult=e.shuffleResult},n.prototype._partialAppIdDataUpdate=function(t){var r=e(5),n=this._getAppIdData();return r(t,function(e,t){n[t]=e}),this._setAppIdData(n)},n.prototype._getHostByType=function(e){return this.hosts[e][this._getHostIndexByType(e)]},n.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},n.prototype._getHostIndexByType=function(e){return this._hostIndexes[e]},n.prototype._setHostIndexByType=function(t,r){var n=e(26),o=n(this._hostIndexes);return o[r]=t,this._partialAppIdDataUpdate({hostIndexes:o}),t},n.prototype._incrementHostIndex=function(e){return this._setHostIndexByType((this._getHostIndexByType(e)+1)%this.hosts[e].length,e)},n.prototype._incrementTimeoutMultipler=function(){var e=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:e})},n.prototype._getTimeoutsForRequest=function(e){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[e]*this._timeoutMultiplier}}}).call(this,e(12))},{1:1,12:12,18:18,26:26,29:29,30:30,31:31,35:35,5:5,8:8}],16:[function(e,t,r){function n(){i.apply(this,arguments)}var o=e(7),i=e(18),s=e(27),a=e(28),c=e(30),u=e(29);t.exports=n,o(n,i),n.prototype.addObject=function(e,t,r){var n=this;return 1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0),this.as._jsonRequest({method:void 0!==t?"PUT":"POST",url:"/1/indexes/"+encodeURIComponent(n.indexName)+(void 0!==t?"/"+encodeURIComponent(t):""),body:e,hostType:"write",callback:r})},n.prototype.addObjects=function(t,r){var n=e(8),o="Usage: index.addObjects(arrayOfObjects[, callback])";if(!n(t))throw new Error(o);for(var i=this,s={requests:[]},a=0;a<t.length;++a){var c={action:"addObject",body:t[a]};s.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(i.indexName)+"/batch",body:s,hostType:"write",callback:r})},n.prototype.partialUpdateObject=function(e,t,r){1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0);var n=this,o="/1/indexes/"+encodeURIComponent(n.indexName)+"/"+encodeURIComponent(e.objectID)+"/partial";return t===!1&&(o+="?createIfNotExists=false"),this.as._jsonRequest({method:"POST",url:o,body:e,hostType:"write",callback:r})},n.prototype.partialUpdateObjects=function(t,r){var n=e(8),o="Usage: index.partialUpdateObjects(arrayOfObjects[, callback])";if(!n(t))throw new Error(o);for(var i=this,s={requests:[]},a=0;a<t.length;++a){var c={action:"partialUpdateObject",objectID:t[a].objectID,body:t[a]};s.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(i.indexName)+"/batch",body:s,hostType:"write",callback:r})},n.prototype.saveObject=function(e,t){var r=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(e.objectID),body:e,hostType:"write",callback:t})},n.prototype.saveObjects=function(t,r){var n=e(8),o="Usage: index.saveObjects(arrayOfObjects[, callback])";if(!n(t))throw new Error(o);for(var i=this,s={requests:[]},a=0;a<t.length;++a){var c={action:"updateObject",objectID:t[a].objectID,body:t[a]};s.requests.push(c)}return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(i.indexName)+"/batch",body:s,hostType:"write",callback:r})},n.prototype.deleteObject=function(e,t){if("function"==typeof e||"string"!=typeof e&&"number"!=typeof e){var r=new u.AlgoliaSearchError("Cannot delete an object without an objectID");return t=e,"function"==typeof t?t(r):this.as._promise.reject(r)}var n=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/"+encodeURIComponent(e),hostType:"write",callback:t})},n.prototype.deleteObjects=function(t,r){var n=e(8),o=e(31),i="Usage: index.deleteObjects(arrayOfObjectIDs[, callback])";if(!n(t))throw new Error(i);var s=this,a={requests:o(t,function(e){return{action:"deleteObject",objectID:e,body:{objectID:e}}})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(s.indexName)+"/batch",body:a,hostType:"write",callback:r})},n.prototype.deleteByQuery=function(t,r,n){function o(e){if(0===e.nbHits)return e;var t=p(e.hits,function(e){return e.objectID});return h.deleteObjects(t).then(i).then(s)}function i(e){return h.waitTask(e.taskID)}function s(){return h.deleteByQuery(t,r)}function a(){c(function(){n(null)},d._setTimeout||setTimeout)}function u(e){c(function(){n(e)},d._setTimeout||setTimeout)}var l=e(26),p=e(31),h=this,d=h.as;1===arguments.length||"function"==typeof r?(n=r,r={}):r=l(r),r.attributesToRetrieve="objectID",r.hitsPerPage=1e3,r.distinct=!1,this.clearCache();var f=this.search(t,r).then(o);return n?void f.then(a,u):f},n.prototype.browseAll=function(t,r){function n(e){if(!a._stopped){var t;t=void 0!==e?"cursor="+encodeURIComponent(e):l,c._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(u.indexName)+"/browse?"+t,hostType:"read",callback:o})}}function o(e,t){if(!a._stopped)return e?void a._error(e):(a._result(t),void 0===t.cursor?void a._end():void n(t.cursor))}"object"==typeof t&&(r=t,t=void 0);var i=e(32),s=e(17),a=new s,c=this.as,u=this,l=c._getSearchParams(i({},r||{},{query:t}),"");return n(),a},n.prototype.ttAdapter=function(e){var t=this;return function(r,n,o){var i;i="function"==typeof o?o:n,t.search(r,e,function(e,t){return e?void i(e):void i(t.hits)})}},n.prototype.waitTask=function(e,t){function r(){return l._jsonRequest({method:"GET",hostType:"read",url:"/1/indexes/"+encodeURIComponent(u.indexName)+"/task/"+e}).then(function(e){a++;var t=i*a*a;return t>s&&(t=s),"published"!==e.status?l._promise.delay(t).then(r):e})}function n(e){c(function(){t(null,e)},l._setTimeout||setTimeout)}function o(e){c(function(){t(e)},l._setTimeout||setTimeout)}var i=100,s=5e3,a=0,u=this,l=u.as,p=r();return t?void p.then(n,o):p},n.prototype.clearIndex=function(e){var t=this;return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/clear",hostType:"write",callback:e})},n.prototype.getSettings=function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/settings?getVersion=2",hostType:"read",callback:e})},n.prototype.searchSynonyms=function(e,t){return"function"==typeof e?(t=e,e={}):void 0===e&&(e={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/search",body:e,hostType:"read",callback:t})},n.prototype.saveSynonym=function(e,t,r){return"function"==typeof t?(r=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e.objectID)+"?forwardToSlaves="+(t.forwardToSlaves?"true":"false"),body:e,hostType:"write",callback:r})},n.prototype.getSynonym=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e),hostType:"read",callback:t})},n.prototype.deleteSynonym=function(e,t,r){return"function"==typeof t?(r=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/"+encodeURIComponent(e)+"?forwardToSlaves="+(t.forwardToSlaves?"true":"false"),hostType:"write",callback:r})},n.prototype.clearSynonyms=function(e,t){return"function"==typeof e?(t=e,e={}):void 0===e&&(e={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/clear?forwardToSlaves="+(e.forwardToSlaves?"true":"false"),hostType:"write",callback:t})},n.prototype.batchSynonyms=function(e,t,r){return"function"==typeof t?(r=t,t={}):void 0===t&&(t={}),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/synonyms/batch?forwardToSlaves="+(t.forwardToSlaves?"true":"false")+"&replaceExistingSynonyms="+(t.replaceExistingSynonyms?"true":"false"),hostType:"write",body:e,callback:r})},n.prototype.setSettings=function(e,t,r){1!==arguments.length&&"function"!=typeof t||(r=t,t={});var n=t.forwardToSlaves||!1,o=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(o.indexName)+"/settings?forwardToSlaves="+(n?"true":"false"),hostType:"write",body:e,callback:r})},n.prototype.listUserKeys=function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/keys",hostType:"read",callback:e})},n.prototype.getUserKeyACL=function(e,t){var r=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/keys/"+e,hostType:"read",callback:t})},n.prototype.deleteUserKey=function(e,t){var r=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/keys/"+e,hostType:"write",callback:t})},n.prototype.addUserKey=function(t,r,n){var o=e(8),i="Usage: index.addUserKey(arrayOfAcls[, params, callback])";if(!o(t))throw new Error(i);1!==arguments.length&&"function"!=typeof r||(n=r,r=null);var s={acl:t};return r&&(s.validity=r.validity,s.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,s.maxHitsPerQuery=r.maxHitsPerQuery,s.description=r.description,r.queryParameters&&(s.queryParameters=this.as._getSearchParams(r.queryParameters,"")),s.referers=r.referers),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys",body:s,hostType:"write",callback:n})},n.prototype.addUserKeyWithValidity=s(function(e,t,r){return this.addUserKey(e,t,r)},a("index.addUserKeyWithValidity()","index.addUserKey()")),n.prototype.updateUserKey=function(t,r,n,o){var i=e(8),s="Usage: index.updateUserKey(key, arrayOfAcls[, params, callback])";if(!i(r))throw new Error(s);2!==arguments.length&&"function"!=typeof n||(o=n,n=null);var a={acl:r};return n&&(a.validity=n.validity,a.maxQueriesPerIPPerHour=n.maxQueriesPerIPPerHour,a.maxHitsPerQuery=n.maxHitsPerQuery,a.description=n.description,n.queryParameters&&(a.queryParameters=this.as._getSearchParams(n.queryParameters,"")),a.referers=n.referers),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys/"+t,body:a,hostType:"write",callback:o})}},{17:17,18:18,26:26,27:27,28:28,29:29,30:30,31:31,32:32,7:7,8:8}],17:[function(e,t,r){"use strict";function n(){}t.exports=n;var o=e(7),i=e(4).EventEmitter;o(n,i),n.prototype.stop=function(){this._stopped=!0,this._clean()},n.prototype._end=function(){this.emit("end"),this._clean()},n.prototype._error=function(e){this.emit("error",e),this._clean()},n.prototype._result=function(e){this.emit("result",e)},n.prototype._clean=function(){this.removeAllListeners("stop"),this.removeAllListeners("end"),this.removeAllListeners("error"),this.removeAllListeners("result")}},{4:4,7:7}],18:[function(e,t,r){function n(e,t){this.indexName=t,this.as=e,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}var o=e(25),i=e(27),s=e(28);t.exports=n,n.prototype.clearCache=function(){this.cache={}},n.prototype.search=o("query"),n.prototype.similarSearch=o("similarQuery"),n.prototype.browse=function(t,r,n){var o,i,s=e(32),a=this;0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(o=0,n=arguments[0],t=void 0):"number"==typeof arguments[0]?(o=arguments[0],"number"==typeof arguments[1]?i=arguments[1]:"function"==typeof arguments[1]&&(n=arguments[1],i=void 0),t=void 0,r=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(n=arguments[1]),r=arguments[0],t=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(n=arguments[1],r=void 0),r=s({},r||{},{page:o,hitsPerPage:i,query:t});var c=this.as._getSearchParams(r,"");return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(a.indexName)+"/browse?"+c,hostType:"read",callback:n})},n.prototype.browseFrom=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse?cursor="+encodeURIComponent(e),hostType:"read",callback:t})},n.prototype.searchForFacetValues=function(t,r){var n=e(26),o=e(33),i="Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])";if(void 0===t.facetName||void 0===t.facetQuery)throw new Error(i);var s=t.facetName,a=o(n(t),function(e){return"facetName"===e}),c=this.as._getSearchParams(a,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(s)+"/query",hostType:"read",body:{params:c},callback:r})},n.prototype.searchFacet=i(function(e,t){return this.searchForFacetValues(e,t)},s("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),n.prototype._search=function(e,t,r){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:r})},n.prototype.getObject=function(e,t,r){var n=this;1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0);var o="";if(void 0!==t){o="?attributes=";for(var i=0;i<t.length;++i)0!==i&&(o+=","),o+=t[i]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/"+encodeURIComponent(e)+o,hostType:"read",callback:r})},n.prototype.getObjects=function(t,r,n){var o=e(8),i=e(31),s="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!o(t))throw new Error(s);var a=this;1!==arguments.length&&"function"!=typeof r||(n=r,r=void 0);var c={requests:i(t,function(e){var t={indexName:a.indexName,objectID:e};return r&&(t.attributesToRetrieve=r.join(",")),t})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:c,callback:n})},n.prototype.as=null,n.prototype.indexName=null,n.prototype.typeAheadArgs=null,n.prototype.typeAheadValueOption=null},{25:25,26:26,27:27,28:28,31:31,32:32,33:33,8:8}],19:[function(e,t,r){(function(t){"use strict";var r=e(7),n=e(5),o=e(14),i=e(29),s=e(23),a=e(24),c=e(34);window.algoliasearch=e(20),"debug"===t.env.NODE_ENV&&e(1).enable("algoliasearch*"),window.angular.module("algoliasearch",[]).service("algolia",["$http","$q","$timeout",function(t,u,l){function p(t,r,n){var o=e(26),i=e(22);return n=o(n||{}),void 0===n.protocol&&(n.protocol=i()),n._ua=n._ua||p.ua,new h(t,r,n)}function h(){o.apply(this,arguments)}return p.version=e(36),p.ua="Algolia for AngularJS "+p.version,p.initPlaces=c(p),window.__algolia={debug:e(1),algoliasearch:p},r(h,o),h.prototype._request=function(e,r){function o(e){d({statusCode:e.status,headers:e.headers,body:JSON.parse(e.data),responseText:e.data})}function a(e){return e}function c(e){if(!p)return 0===e.status?void f(new i.Network({more:e})):void d({body:JSON.parse(e.data),statusCode:e.status})}var p,h=u.defer(),d=h.resolve,f=h.reject,y=r.body;e=s(e,r.headers);var m=u.defer(),v=m.promise;l(function(){p=!0,m.resolve("test"),f(new i.RequestTimeout)},r.timeouts.complete);var g={};return n(t.defaults.headers.common,function(e,t){g[t]=void 0}),g.accept="application/json",y&&("POST"===r.method?g["content-type"]="application/x-www-form-urlencoded":g["content-type"]="application/json"),t({url:e,method:r.method,data:y,cache:!1,timeout:v,headers:g,transformResponse:a,withCredentials:!1}).then(o,c),h.promise},h.prototype._request.fallback=function(e,t){e=s(e,t.headers);var r=u.defer(),n=r.resolve,o=r.reject;return a(e,t,function(e,t){return e?void o(e):void n(t)}),r.promise},h.prototype._promise={reject:function(e){return u.reject(e)},resolve:function(e){return u.when(e)},delay:function(e){var t=u.defer(),r=t.resolve;return l(r,e),t.promise}},{Client:function(e,t,r){return p(e,t,r)},ua:p.ua,version:p.version}}])}).call(this,e(12))},{1:1,12:12,14:14,20:20,22:22,23:23,24:24,26:26,29:29,34:34,36:36,5:5,7:7}],20:[function(e,t,r){"use strict";var n=e(14),o=e(21);t.exports=o(n)},{14:14,21:21}],21:[function(e,t,r){(function(r){"use strict";var n=e(6),o=n.Promise||e(3).Promise;t.exports=function(t,i){function s(t,r,n){var o=e(26),i=e(22);return n=o(n||{}),void 0===n.protocol&&(n.protocol=i()),n._ua=n._ua||s.ua,new a(t,r,n)}function a(){t.apply(this,arguments)}var c=e(7),u=e(29),l=e(23),p=e(24),h=e(34);i=i||"","debug"===r.env.NODE_ENV&&e(1).enable("algoliasearch*"),s.version=e(36),s.ua="Algolia for vanilla JavaScript "+i+s.version,s.initPlaces=h(s),n.__algolia={debug:e(1),algoliasearch:s};var d={hasXMLHttpRequest:"XMLHttpRequest"in n,hasXDomainRequest:"XDomainRequest"in n};return d.hasXMLHttpRequest&&(d.cors="withCredentials"in new XMLHttpRequest),c(a,t),a.prototype._request=function(e,t){return new o(function(r,n){function o(){if(!f){clearTimeout(h);var e;try{e={body:JSON.parse(m.responseText),responseText:m.responseText,statusCode:m.status,headers:m.getAllResponseHeaders&&m.getAllResponseHeaders()||{}}}catch(t){e=new u.UnparsableJSON({more:m.responseText})}e instanceof u.UnparsableJSON?n(e):r(e)}}function i(e){f||(clearTimeout(h),n(new u.Network({more:e})))}function s(){f=!0,m.abort(),n(new u.RequestTimeout)}function a(){v=!0,clearTimeout(h),h=setTimeout(s,t.timeouts.complete)}function c(){v||a()}function p(){!v&&m.readyState>1&&a()}if(!d.cors&&!d.hasXDomainRequest)return void n(new u.Network("CORS not supported"));e=l(e,t.headers);var h,f,y=t.body,m=d.cors?new XMLHttpRequest:new XDomainRequest,v=!1;h=setTimeout(s,t.timeouts.connect),m.onprogress=c,"onreadystatechange"in m&&(m.onreadystatechange=p),m.onload=o,m.onerror=i,m instanceof XMLHttpRequest?m.open(t.method,e,!0):m.open(t.method,e),d.cors&&(y&&("POST"===t.method?m.setRequestHeader("content-type","application/x-www-form-urlencoded"):m.setRequestHeader("content-type","application/json")),m.setRequestHeader("accept","application/json")),m.send(y)})},a.prototype._request.fallback=function(e,t){return e=l(e,t.headers),new o(function(r,n){p(e,t,function(e,t){return e?void n(e):void r(t)})})},a.prototype._promise={reject:function(e){return o.reject(e)},resolve:function(e){return o.resolve(e)},delay:function(e){return new o(function(t){setTimeout(t,e)})}},s}}).call(this,e(12))},{1:1,12:12,22:22,23:23,24:24,26:26,29:29,3:3,34:34,36:36,6:6,7:7}],22:[function(e,t,r){"use strict";function n(){var e=window.document.location.protocol;return"http:"!==e&&"https:"!==e&&(e="http:"),e}t.exports=n},{}],23:[function(e,t,r){"use strict";function n(e,t){return e+=/\?/.test(e)?"&":"?",e+o(t)}t.exports=n;var o=e(13)},{13:13}],24:[function(e,t,r){"use strict";function n(e,t,r){function n(){t.debug("JSONP: success"),m||h||(m=!0,p||(t.debug("JSONP: Fail. Script loaded but did not call the callback"),a(),r(new o.JSONPScriptFail)))}function s(){"loaded"!==this.readyState&&"complete"!==this.readyState||n()}function a(){clearTimeout(v),f.onload=null,f.onreadystatechange=null,f.onerror=null,d.removeChild(f)}function c(){try{delete window[y],delete window[y+"_loaded"]}catch(e){window[y]=window[y+"_loaded"]=void 0}}function u(){t.debug("JSONP: Script timeout"),h=!0,a(),r(new o.RequestTimeout)}function l(){t.debug("JSONP: Script error"),m||h||(a(),r(new o.JSONPScriptError))}if("GET"!==t.method)return void r(new Error("Method "+t.method+" "+e+" is not supported by JSONP."));t.debug("JSONP: start");var p=!1,h=!1;i+=1;var d=document.getElementsByTagName("head")[0],f=document.createElement("script"),y="algoliaJSONP_"+i,m=!1;window[y]=function(e){return c(),h?void t.debug("JSONP: Late answer, ignoring"):(p=!0,a(),void r(null,{body:e}))},e+="&callback="+y,t.jsonBody&&t.jsonBody.params&&(e+="&"+t.jsonBody.params);var v=setTimeout(u,t.timeouts.complete);f.onreadystatechange=s,f.onload=n,f.onerror=l,f.async=!0,f.defer=!0,f.src=e,d.appendChild(f)}t.exports=n;var o=e(29),i=0},{29:29}],25:[function(e,t,r){function n(e,t){return function(r,n,i){if("function"==typeof r&&"object"==typeof n||"object"==typeof i)throw new o.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof r?(i=r,r=""):1!==arguments.length&&"function"!=typeof n||(i=n,n=void 0),"object"==typeof r&&null!==r?(n=r,r=void 0):void 0!==r&&null!==r||(r="");var s="";return void 0!==r&&(s+=e+"="+encodeURIComponent(r)),void 0!==n&&(s=this.as._getSearchParams(n,s)),this._search(s,t,i)}}t.exports=n;var o=e(29)},{29:29}],26:[function(e,t,r){t.exports=function(e){return JSON.parse(JSON.stringify(e))}},{}],27:[function(e,t,r){t.exports=function(e,t){function r(){return n||(console.log(t),n=!0),e.apply(this,arguments)}var n=!1;return r}},{}],28:[function(e,t,r){t.exports=function(e,t){var r=e.toLowerCase().replace(".","").replace("()","");return"algoliasearch: `"+e+"` was replaced by `"+t+"`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#"+r}},{}],29:[function(e,t,r){"use strict";function n(t,r){var n=e(5),o=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):o.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=t||"Unknown error",r&&n(r,function(e,t){o[t]=e})}function o(e,t){function r(){var r=Array.prototype.slice.call(arguments,0);"string"!=typeof r[0]&&r.unshift(t),n.apply(this,r),this.name="AlgoliaSearch"+e+"Error"}return i(r,n),r}var i=e(7);i(n,Error),t.exports={AlgoliaSearchError:n,UnparsableJSON:o("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:o("RequestTimeout","Request timedout before getting a response"),Network:o("Network","Network issue, see err.more for details"),JSONPScriptFail:o("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:o("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:o("Unknown","Unknown error occured")}},{5:5,7:7}],30:[function(e,t,r){t.exports=function(e,t){t(e,0)}},{}],31:[function(e,t,r){var n=e(5);t.exports=function(e,t){var r=[];return n(e,function(n,o){r.push(t(n,o,e))}),r}},{5:5}],32:[function(e,t,r){var n=e(5);t.exports=function o(e){var t=Array.prototype.slice.call(arguments);return n(t,function(t){for(var r in t)t.hasOwnProperty(r)&&("object"==typeof e[r]&&"object"==typeof t[r]?e[r]=o({},e[r],t[r]):void 0!==t[r]&&(e[r]=t[r]))}),e}},{5:5}],33:[function(e,t,r){t.exports=function(t,r){var n=e(10),o=e(5),i={};return o(n(t),function(e){r(e)!==!0&&(i[e]=t[e])}),i}},{10:10,5:5}],34:[function(e,t,r){function n(t){return function(r,n,i){var s=e(26);i=i&&s(i)||{},i.hosts=i.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof r&&void 0!==r||(r="",n="",i._allowEmptyCredentials=!0);var a=t(r,n,i),c=a.initIndex("places");return c.search=o("query","/1/places/query"),c}}t.exports=n;var o=e(25)},{25:25,26:26}],35:[function(e,t,r){(function(r){function n(e,t){return 1===arguments.length?s.get(e):s.set(e,t)}function o(){try{return"localStorage"in r&&null!==r.localStorage&&!r.localStorage[c]&&(r.localStorage.setItem(c,JSON.stringify({})),!0)}catch(e){return!1}}function i(){try{r.localStorage.removeItem(c)}catch(e){}}var s,a=e(1)("algoliasearch:src/hostIndexState.js"),c="algoliasearch-client-js",u={state:{},set:function(e,t){return this.state[e]=t,this.state[e]},get:function(e){return this.state[e]||null}},l={set:function(e,t){try{var n=JSON.parse(r.localStorage[c]);return n[e]=t,r.localStorage[c]=JSON.stringify(n),n[e]}catch(o){return a("localStorage set failed with",o),i(),s=u,s.set(e,t)}},get:function(e){return JSON.parse(r.localStorage[c])[e]||null}};s=o()?l:u,t.exports={get:n,set:n}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],36:[function(e,t,r){"use strict";t.exports="3.20.3"},{}]},{},[19]);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! algoliasearch 3.
|
1
|
+
/*! algoliasearch 3.20.3 | © 2014, 2015 Algolia SAS | github.com/algolia/algoliasearch-client-js */
|
2
2
|
(function(f){var g;if(typeof window!=='undefined'){g=window}else if(typeof self!=='undefined'){g=self}g.ALGOLIA_MIGRATION_LAYER=f()})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
3
3
|
|
4
4
|
module.exports = function load (src, opts, cb) {
|
@@ -200,258 +200,7 @@ function migrationLayer(buildName) {
|
|
200
200
|
|
201
201
|
},{"2":2,"3":3,"4":4}]},{},[5])(5)
|
202
202
|
});(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
203
|
-
|
204
|
-
* Helpers.
|
205
|
-
*/
|
206
|
-
|
207
|
-
var s = 1000;
|
208
|
-
var m = s * 60;
|
209
|
-
var h = m * 60;
|
210
|
-
var d = h * 24;
|
211
|
-
var y = d * 365.25;
|
212
|
-
|
213
|
-
/**
|
214
|
-
* Parse or format the given `val`.
|
215
|
-
*
|
216
|
-
* Options:
|
217
|
-
*
|
218
|
-
* - `long` verbose formatting [false]
|
219
|
-
*
|
220
|
-
* @param {String|Number} val
|
221
|
-
* @param {Object} options
|
222
|
-
* @return {String|Number}
|
223
|
-
* @api public
|
224
|
-
*/
|
225
|
-
|
226
|
-
module.exports = function(val, options){
|
227
|
-
options = options || {};
|
228
|
-
if ('string' == typeof val) return parse(val);
|
229
|
-
// long, short were "future reserved words in js", YUI compressor fail on them
|
230
|
-
// https://github.com/algolia/algoliasearch-client-js/issues/113#issuecomment-111978606
|
231
|
-
// https://github.com/yui/yuicompressor/issues/47
|
232
|
-
// https://github.com/rauchg/ms.js/pull/40
|
233
|
-
return options['long']
|
234
|
-
? _long(val)
|
235
|
-
: _short(val);
|
236
|
-
};
|
237
|
-
|
238
|
-
/**
|
239
|
-
* Parse the given `str` and return milliseconds.
|
240
|
-
*
|
241
|
-
* @param {String} str
|
242
|
-
* @return {Number}
|
243
|
-
* @api private
|
244
|
-
*/
|
245
|
-
|
246
|
-
function parse(str) {
|
247
|
-
str = '' + str;
|
248
|
-
if (str.length > 10000) return;
|
249
|
-
var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
|
250
|
-
if (!match) return;
|
251
|
-
var n = parseFloat(match[1]);
|
252
|
-
var type = (match[2] || 'ms').toLowerCase();
|
253
|
-
switch (type) {
|
254
|
-
case 'years':
|
255
|
-
case 'year':
|
256
|
-
case 'yrs':
|
257
|
-
case 'yr':
|
258
|
-
case 'y':
|
259
|
-
return n * y;
|
260
|
-
case 'days':
|
261
|
-
case 'day':
|
262
|
-
case 'd':
|
263
|
-
return n * d;
|
264
|
-
case 'hours':
|
265
|
-
case 'hour':
|
266
|
-
case 'hrs':
|
267
|
-
case 'hr':
|
268
|
-
case 'h':
|
269
|
-
return n * h;
|
270
|
-
case 'minutes':
|
271
|
-
case 'minute':
|
272
|
-
case 'mins':
|
273
|
-
case 'min':
|
274
|
-
case 'm':
|
275
|
-
return n * m;
|
276
|
-
case 'seconds':
|
277
|
-
case 'second':
|
278
|
-
case 'secs':
|
279
|
-
case 'sec':
|
280
|
-
case 's':
|
281
|
-
return n * s;
|
282
|
-
case 'milliseconds':
|
283
|
-
case 'millisecond':
|
284
|
-
case 'msecs':
|
285
|
-
case 'msec':
|
286
|
-
case 'ms':
|
287
|
-
return n;
|
288
|
-
}
|
289
|
-
}
|
290
|
-
|
291
|
-
/**
|
292
|
-
* Short format for `ms`.
|
293
|
-
*
|
294
|
-
* @param {Number} ms
|
295
|
-
* @return {String}
|
296
|
-
* @api private
|
297
|
-
*/
|
298
|
-
|
299
|
-
function _short(ms) {
|
300
|
-
if (ms >= d) return Math.round(ms / d) + 'd';
|
301
|
-
if (ms >= h) return Math.round(ms / h) + 'h';
|
302
|
-
if (ms >= m) return Math.round(ms / m) + 'm';
|
303
|
-
if (ms >= s) return Math.round(ms / s) + 's';
|
304
|
-
return ms + 'ms';
|
305
|
-
}
|
306
|
-
|
307
|
-
/**
|
308
|
-
* Long format for `ms`.
|
309
|
-
*
|
310
|
-
* @param {Number} ms
|
311
|
-
* @return {String}
|
312
|
-
* @api private
|
313
|
-
*/
|
314
|
-
|
315
|
-
function _long(ms) {
|
316
|
-
return plural(ms, d, 'day')
|
317
|
-
|| plural(ms, h, 'hour')
|
318
|
-
|| plural(ms, m, 'minute')
|
319
|
-
|| plural(ms, s, 'second')
|
320
|
-
|| ms + ' ms';
|
321
|
-
}
|
322
|
-
|
323
|
-
/**
|
324
|
-
* Pluralization helper.
|
325
|
-
*/
|
326
|
-
|
327
|
-
function plural(ms, n, name) {
|
328
|
-
if (ms < n) return;
|
329
|
-
if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
|
330
|
-
return Math.ceil(ms / n) + ' ' + name + 's';
|
331
|
-
}
|
332
|
-
|
333
|
-
},{}],2:[function(require,module,exports){
|
334
|
-
// shim for using process in browser
|
335
|
-
|
336
|
-
var process = module.exports = {};
|
337
|
-
|
338
|
-
// cached from whatever global is present so that test runners that stub it
|
339
|
-
// don't break things. But we need to wrap it in a try catch in case it is
|
340
|
-
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
341
|
-
// function because try/catches deoptimize in certain engines.
|
342
|
-
|
343
|
-
var cachedSetTimeout;
|
344
|
-
var cachedClearTimeout;
|
345
|
-
|
346
|
-
(function () {
|
347
|
-
try {
|
348
|
-
cachedSetTimeout = setTimeout;
|
349
|
-
} catch (e) {
|
350
|
-
cachedSetTimeout = function () {
|
351
|
-
throw new Error('setTimeout is not defined');
|
352
|
-
}
|
353
|
-
}
|
354
|
-
try {
|
355
|
-
cachedClearTimeout = clearTimeout;
|
356
|
-
} catch (e) {
|
357
|
-
cachedClearTimeout = function () {
|
358
|
-
throw new Error('clearTimeout is not defined');
|
359
|
-
}
|
360
|
-
}
|
361
|
-
} ())
|
362
|
-
var queue = [];
|
363
|
-
var draining = false;
|
364
|
-
var currentQueue;
|
365
|
-
var queueIndex = -1;
|
366
|
-
|
367
|
-
function cleanUpNextTick() {
|
368
|
-
if (!draining || !currentQueue) {
|
369
|
-
return;
|
370
|
-
}
|
371
|
-
draining = false;
|
372
|
-
if (currentQueue.length) {
|
373
|
-
queue = currentQueue.concat(queue);
|
374
|
-
} else {
|
375
|
-
queueIndex = -1;
|
376
|
-
}
|
377
|
-
if (queue.length) {
|
378
|
-
drainQueue();
|
379
|
-
}
|
380
|
-
}
|
381
|
-
|
382
|
-
function drainQueue() {
|
383
|
-
if (draining) {
|
384
|
-
return;
|
385
|
-
}
|
386
|
-
var timeout = cachedSetTimeout(cleanUpNextTick);
|
387
|
-
draining = true;
|
388
|
-
|
389
|
-
var len = queue.length;
|
390
|
-
while(len) {
|
391
|
-
currentQueue = queue;
|
392
|
-
queue = [];
|
393
|
-
while (++queueIndex < len) {
|
394
|
-
if (currentQueue) {
|
395
|
-
currentQueue[queueIndex].run();
|
396
|
-
}
|
397
|
-
}
|
398
|
-
queueIndex = -1;
|
399
|
-
len = queue.length;
|
400
|
-
}
|
401
|
-
currentQueue = null;
|
402
|
-
draining = false;
|
403
|
-
cachedClearTimeout(timeout);
|
404
|
-
}
|
405
|
-
|
406
|
-
process.nextTick = function (fun) {
|
407
|
-
var args = new Array(arguments.length - 1);
|
408
|
-
if (arguments.length > 1) {
|
409
|
-
for (var i = 1; i < arguments.length; i++) {
|
410
|
-
args[i - 1] = arguments[i];
|
411
|
-
}
|
412
|
-
}
|
413
|
-
queue.push(new Item(fun, args));
|
414
|
-
if (queue.length === 1 && !draining) {
|
415
|
-
cachedSetTimeout(drainQueue, 0);
|
416
|
-
}
|
417
|
-
};
|
418
|
-
|
419
|
-
// v8 likes predictible objects
|
420
|
-
function Item(fun, array) {
|
421
|
-
this.fun = fun;
|
422
|
-
this.array = array;
|
423
|
-
}
|
424
|
-
Item.prototype.run = function () {
|
425
|
-
this.fun.apply(null, this.array);
|
426
|
-
};
|
427
|
-
process.title = 'browser';
|
428
|
-
process.browser = true;
|
429
|
-
process.env = {};
|
430
|
-
process.argv = [];
|
431
|
-
process.version = ''; // empty string to avoid regexp issues
|
432
|
-
process.versions = {};
|
433
|
-
|
434
|
-
function noop() {}
|
435
|
-
|
436
|
-
process.on = noop;
|
437
|
-
process.addListener = noop;
|
438
|
-
process.once = noop;
|
439
|
-
process.off = noop;
|
440
|
-
process.removeListener = noop;
|
441
|
-
process.removeAllListeners = noop;
|
442
|
-
process.emit = noop;
|
443
|
-
|
444
|
-
process.binding = function (name) {
|
445
|
-
throw new Error('process.binding is not supported');
|
446
|
-
};
|
447
|
-
|
448
|
-
process.cwd = function () { return '/' };
|
449
|
-
process.chdir = function (dir) {
|
450
|
-
throw new Error('process.chdir is not supported');
|
451
|
-
};
|
452
|
-
process.umask = function() { return 0; };
|
453
|
-
|
454
|
-
},{}],3:[function(require,module,exports){
|
203
|
+
(function (process){
|
455
204
|
|
456
205
|
/**
|
457
206
|
* This is the web browser implementation of `debug()`.
|
@@ -459,7 +208,7 @@ process.umask = function() { return 0; };
|
|
459
208
|
* Expose `debug()` as the module.
|
460
209
|
*/
|
461
210
|
|
462
|
-
exports = module.exports = require(
|
211
|
+
exports = module.exports = require(2);
|
463
212
|
exports.log = log;
|
464
213
|
exports.formatArgs = formatArgs;
|
465
214
|
exports.save = save;
|
@@ -493,7 +242,8 @@ exports.colors = [
|
|
493
242
|
|
494
243
|
function useColors() {
|
495
244
|
// is webkit? http://stackoverflow.com/a/16459606/376773
|
496
|
-
|
245
|
+
// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
|
246
|
+
return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) ||
|
497
247
|
// is firebug? http://stackoverflow.com/a/398120/376773
|
498
248
|
(window.console && (console.firebug || (console.exception && console.table))) ||
|
499
249
|
// is firefox >= v31?
|
@@ -506,7 +256,11 @@ function useColors() {
|
|
506
256
|
*/
|
507
257
|
|
508
258
|
exports.formatters.j = function(v) {
|
509
|
-
|
259
|
+
try {
|
260
|
+
return JSON.stringify(v);
|
261
|
+
} catch (err) {
|
262
|
+
return '[UnexpectedJSONParseError]: ' + err.message;
|
263
|
+
}
|
510
264
|
};
|
511
265
|
|
512
266
|
|
@@ -593,9 +347,13 @@ function save(namespaces) {
|
|
593
347
|
function load() {
|
594
348
|
var r;
|
595
349
|
try {
|
596
|
-
|
350
|
+
return exports.storage.debug;
|
597
351
|
} catch(e) {}
|
598
|
-
|
352
|
+
|
353
|
+
// If debug isn't set in LS, and we're in Electron, try to load $DEBUG
|
354
|
+
if (typeof process !== 'undefined' && 'env' in process) {
|
355
|
+
return process.env.DEBUG;
|
356
|
+
}
|
599
357
|
}
|
600
358
|
|
601
359
|
/**
|
@@ -621,7 +379,8 @@ function localstorage(){
|
|
621
379
|
} catch (e) {}
|
622
380
|
}
|
623
381
|
|
624
|
-
},
|
382
|
+
}).call(this,require(12))
|
383
|
+
},{"12":12,"2":2}],2:[function(require,module,exports){
|
625
384
|
|
626
385
|
/**
|
627
386
|
* This is the common logic for both the Node.js and web browser
|
@@ -630,12 +389,12 @@ function localstorage(){
|
|
630
389
|
* Expose `debug()` as the module.
|
631
390
|
*/
|
632
391
|
|
633
|
-
exports = module.exports = debug;
|
392
|
+
exports = module.exports = debug.debug = debug;
|
634
393
|
exports.coerce = coerce;
|
635
394
|
exports.disable = disable;
|
636
395
|
exports.enable = enable;
|
637
396
|
exports.enabled = enabled;
|
638
|
-
exports.humanize = require(
|
397
|
+
exports.humanize = require(9);
|
639
398
|
|
640
399
|
/**
|
641
400
|
* The currently active debug mode names, and names to skip.
|
@@ -707,7 +466,10 @@ function debug(namespace) {
|
|
707
466
|
if (null == self.useColors) self.useColors = exports.useColors();
|
708
467
|
if (null == self.color && self.useColors) self.color = selectColor();
|
709
468
|
|
710
|
-
var args = Array
|
469
|
+
var args = new Array(arguments.length);
|
470
|
+
for (var i = 0; i < args.length; i++) {
|
471
|
+
args[i] = arguments[i];
|
472
|
+
}
|
711
473
|
|
712
474
|
args[0] = exports.coerce(args[0]);
|
713
475
|
|
@@ -734,9 +496,9 @@ function debug(namespace) {
|
|
734
496
|
return match;
|
735
497
|
});
|
736
498
|
|
737
|
-
|
738
|
-
|
739
|
-
|
499
|
+
// apply env-specific formatting
|
500
|
+
args = exports.formatArgs.apply(self, args);
|
501
|
+
|
740
502
|
var logFn = enabled.log || exports.log || console.log.bind(console);
|
741
503
|
logFn.apply(self, args);
|
742
504
|
}
|
@@ -765,7 +527,7 @@ function enable(namespaces) {
|
|
765
527
|
|
766
528
|
for (var i = 0; i < len; i++) {
|
767
529
|
if (!split[i]) continue; // ignore empty strings
|
768
|
-
namespaces = split[i].replace(/\*/g, '.*?');
|
530
|
+
namespaces = split[i].replace(/[\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '.*?');
|
769
531
|
if (namespaces[0] === '-') {
|
770
532
|
exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
|
771
533
|
} else {
|
@@ -820,970 +582,1167 @@ function coerce(val) {
|
|
820
582
|
return val;
|
821
583
|
}
|
822
584
|
|
823
|
-
},{"
|
585
|
+
},{"9":9}],3:[function(require,module,exports){
|
824
586
|
(function (process,global){
|
825
587
|
/*!
|
826
588
|
* @overview es6-promise - a tiny implementation of Promises/A+.
|
827
589
|
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
|
828
590
|
* @license Licensed under MIT license
|
829
|
-
* See https://raw.githubusercontent.com/
|
830
|
-
* @version
|
591
|
+
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
|
592
|
+
* @version 4.0.5
|
831
593
|
*/
|
832
594
|
|
833
|
-
(function() {
|
834
|
-
|
835
|
-
function
|
836
|
-
|
837
|
-
|
595
|
+
(function (global, factory) {
|
596
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
597
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
598
|
+
(global.ES6Promise = factory());
|
599
|
+
}(this, (function () { 'use strict';
|
838
600
|
|
839
|
-
|
840
|
-
|
841
|
-
|
601
|
+
function objectOrFunction(x) {
|
602
|
+
return typeof x === 'function' || typeof x === 'object' && x !== null;
|
603
|
+
}
|
842
604
|
|
843
|
-
|
844
|
-
|
845
|
-
|
605
|
+
function isFunction(x) {
|
606
|
+
return typeof x === 'function';
|
607
|
+
}
|
846
608
|
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
609
|
+
var _isArray = undefined;
|
610
|
+
if (!Array.isArray) {
|
611
|
+
_isArray = function (x) {
|
612
|
+
return Object.prototype.toString.call(x) === '[object Array]';
|
613
|
+
};
|
614
|
+
} else {
|
615
|
+
_isArray = Array.isArray;
|
616
|
+
}
|
617
|
+
|
618
|
+
var isArray = _isArray;
|
619
|
+
|
620
|
+
var len = 0;
|
621
|
+
var vertxNext = undefined;
|
622
|
+
var customSchedulerFn = undefined;
|
623
|
+
|
624
|
+
var asap = function asap(callback, arg) {
|
625
|
+
queue[len] = callback;
|
626
|
+
queue[len + 1] = arg;
|
627
|
+
len += 2;
|
628
|
+
if (len === 2) {
|
629
|
+
// If len is 2, that means that we need to schedule an async flush.
|
630
|
+
// If additional callbacks are queued before the queue is flushed, they
|
631
|
+
// will be processed by this flush that we are scheduling.
|
632
|
+
if (customSchedulerFn) {
|
633
|
+
customSchedulerFn(flush);
|
852
634
|
} else {
|
853
|
-
|
635
|
+
scheduleFlush();
|
854
636
|
}
|
637
|
+
}
|
638
|
+
};
|
855
639
|
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
var lib$es6$promise$asap$$customSchedulerFn;
|
860
|
-
|
861
|
-
var lib$es6$promise$asap$$asap = function asap(callback, arg) {
|
862
|
-
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;
|
863
|
-
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;
|
864
|
-
lib$es6$promise$asap$$len += 2;
|
865
|
-
if (lib$es6$promise$asap$$len === 2) {
|
866
|
-
// If len is 2, that means that we need to schedule an async flush.
|
867
|
-
// If additional callbacks are queued before the queue is flushed, they
|
868
|
-
// will be processed by this flush that we are scheduling.
|
869
|
-
if (lib$es6$promise$asap$$customSchedulerFn) {
|
870
|
-
lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);
|
871
|
-
} else {
|
872
|
-
lib$es6$promise$asap$$scheduleFlush();
|
873
|
-
}
|
874
|
-
}
|
875
|
-
}
|
640
|
+
function setScheduler(scheduleFn) {
|
641
|
+
customSchedulerFn = scheduleFn;
|
642
|
+
}
|
876
643
|
|
877
|
-
|
878
|
-
|
879
|
-
|
644
|
+
function setAsap(asapFn) {
|
645
|
+
asap = asapFn;
|
646
|
+
}
|
880
647
|
|
881
|
-
|
882
|
-
|
883
|
-
|
648
|
+
var browserWindow = typeof window !== 'undefined' ? window : undefined;
|
649
|
+
var browserGlobal = browserWindow || {};
|
650
|
+
var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
|
651
|
+
var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';
|
884
652
|
|
885
|
-
|
886
|
-
|
887
|
-
var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;
|
888
|
-
var lib$es6$promise$asap$$isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
889
|
-
|
890
|
-
// test for web worker but not in IE10
|
891
|
-
var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&
|
892
|
-
typeof importScripts !== 'undefined' &&
|
893
|
-
typeof MessageChannel !== 'undefined';
|
894
|
-
|
895
|
-
// node
|
896
|
-
function lib$es6$promise$asap$$useNextTick() {
|
897
|
-
// node version 0.10.x displays a deprecation warning when nextTick is used recursively
|
898
|
-
// see https://github.com/cujojs/when/issues/410 for details
|
899
|
-
return function() {
|
900
|
-
process.nextTick(lib$es6$promise$asap$$flush);
|
901
|
-
};
|
902
|
-
}
|
653
|
+
// test for web worker but not in IE10
|
654
|
+
var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
|
903
655
|
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
656
|
+
// node
|
657
|
+
function useNextTick() {
|
658
|
+
// node version 0.10.x displays a deprecation warning when nextTick is used recursively
|
659
|
+
// see https://github.com/cujojs/when/issues/410 for details
|
660
|
+
return function () {
|
661
|
+
return process.nextTick(flush);
|
662
|
+
};
|
663
|
+
}
|
910
664
|
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
665
|
+
// vertx
|
666
|
+
function useVertxTimer() {
|
667
|
+
if (typeof vertxNext !== 'undefined') {
|
668
|
+
return function () {
|
669
|
+
vertxNext(flush);
|
670
|
+
};
|
671
|
+
}
|
916
672
|
|
917
|
-
|
918
|
-
|
919
|
-
};
|
920
|
-
}
|
673
|
+
return useSetTimeout();
|
674
|
+
}
|
921
675
|
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
channel.port2.postMessage(0);
|
928
|
-
};
|
929
|
-
}
|
676
|
+
function useMutationObserver() {
|
677
|
+
var iterations = 0;
|
678
|
+
var observer = new BrowserMutationObserver(flush);
|
679
|
+
var node = document.createTextNode('');
|
680
|
+
observer.observe(node, { characterData: true });
|
930
681
|
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
}
|
682
|
+
return function () {
|
683
|
+
node.data = iterations = ++iterations % 2;
|
684
|
+
};
|
685
|
+
}
|
936
686
|
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
687
|
+
// web worker
|
688
|
+
function useMessageChannel() {
|
689
|
+
var channel = new MessageChannel();
|
690
|
+
channel.port1.onmessage = flush;
|
691
|
+
return function () {
|
692
|
+
return channel.port2.postMessage(0);
|
693
|
+
};
|
694
|
+
}
|
942
695
|
|
943
|
-
|
696
|
+
function useSetTimeout() {
|
697
|
+
// Store setTimeout reference so es6-promise will be unaffected by
|
698
|
+
// other code modifying setTimeout (like sinon.useFakeTimers())
|
699
|
+
var globalSetTimeout = setTimeout;
|
700
|
+
return function () {
|
701
|
+
return globalSetTimeout(flush, 1);
|
702
|
+
};
|
703
|
+
}
|
944
704
|
|
945
|
-
|
946
|
-
|
947
|
-
|
705
|
+
var queue = new Array(1000);
|
706
|
+
function flush() {
|
707
|
+
for (var i = 0; i < len; i += 2) {
|
708
|
+
var callback = queue[i];
|
709
|
+
var arg = queue[i + 1];
|
948
710
|
|
949
|
-
|
950
|
-
}
|
711
|
+
callback(arg);
|
951
712
|
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
var vertx = r('vertx');
|
956
|
-
lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;
|
957
|
-
return lib$es6$promise$asap$$useVertxTimer();
|
958
|
-
} catch(e) {
|
959
|
-
return lib$es6$promise$asap$$useSetTimeout();
|
960
|
-
}
|
961
|
-
}
|
713
|
+
queue[i] = undefined;
|
714
|
+
queue[i + 1] = undefined;
|
715
|
+
}
|
962
716
|
|
963
|
-
|
964
|
-
|
965
|
-
if (lib$es6$promise$asap$$isNode) {
|
966
|
-
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();
|
967
|
-
} else if (lib$es6$promise$asap$$BrowserMutationObserver) {
|
968
|
-
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();
|
969
|
-
} else if (lib$es6$promise$asap$$isWorker) {
|
970
|
-
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();
|
971
|
-
} else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {
|
972
|
-
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();
|
973
|
-
} else {
|
974
|
-
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();
|
975
|
-
}
|
976
|
-
function lib$es6$promise$then$$then(onFulfillment, onRejection) {
|
977
|
-
var parent = this;
|
717
|
+
len = 0;
|
718
|
+
}
|
978
719
|
|
979
|
-
|
720
|
+
function attemptVertx() {
|
721
|
+
try {
|
722
|
+
var r = require;
|
723
|
+
var vertx = r('vertx');
|
724
|
+
vertxNext = vertx.runOnLoop || vertx.runOnContext;
|
725
|
+
return useVertxTimer();
|
726
|
+
} catch (e) {
|
727
|
+
return useSetTimeout();
|
728
|
+
}
|
729
|
+
}
|
980
730
|
|
981
|
-
|
982
|
-
|
983
|
-
|
731
|
+
var scheduleFlush = undefined;
|
732
|
+
// Decide what async method to use to triggering processing of queued callbacks:
|
733
|
+
if (isNode) {
|
734
|
+
scheduleFlush = useNextTick();
|
735
|
+
} else if (BrowserMutationObserver) {
|
736
|
+
scheduleFlush = useMutationObserver();
|
737
|
+
} else if (isWorker) {
|
738
|
+
scheduleFlush = useMessageChannel();
|
739
|
+
} else if (browserWindow === undefined && typeof require === 'function') {
|
740
|
+
scheduleFlush = attemptVertx();
|
741
|
+
} else {
|
742
|
+
scheduleFlush = useSetTimeout();
|
743
|
+
}
|
984
744
|
|
985
|
-
|
745
|
+
function then(onFulfillment, onRejection) {
|
746
|
+
var _arguments = arguments;
|
986
747
|
|
987
|
-
|
988
|
-
var callback = arguments[state - 1];
|
989
|
-
lib$es6$promise$asap$$asap(function(){
|
990
|
-
lib$es6$promise$$internal$$invokeCallback(state, child, callback, parent._result);
|
991
|
-
});
|
992
|
-
} else {
|
993
|
-
lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);
|
994
|
-
}
|
748
|
+
var parent = this;
|
995
749
|
|
996
|
-
|
997
|
-
}
|
998
|
-
var lib$es6$promise$then$$default = lib$es6$promise$then$$then;
|
999
|
-
function lib$es6$promise$promise$resolve$$resolve(object) {
|
1000
|
-
/*jshint validthis:true */
|
1001
|
-
var Constructor = this;
|
750
|
+
var child = new this.constructor(noop);
|
1002
751
|
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
752
|
+
if (child[PROMISE_ID] === undefined) {
|
753
|
+
makePromise(child);
|
754
|
+
}
|
1006
755
|
|
1007
|
-
|
1008
|
-
lib$es6$promise$$internal$$resolve(promise, object);
|
1009
|
-
return promise;
|
1010
|
-
}
|
1011
|
-
var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;
|
1012
|
-
var lib$es6$promise$$internal$$PROMISE_ID = Math.random().toString(36).substring(16);
|
756
|
+
var _state = parent._state;
|
1013
757
|
|
1014
|
-
|
758
|
+
if (_state) {
|
759
|
+
(function () {
|
760
|
+
var callback = _arguments[_state - 1];
|
761
|
+
asap(function () {
|
762
|
+
return invokeCallback(_state, child, callback, parent._result);
|
763
|
+
});
|
764
|
+
})();
|
765
|
+
} else {
|
766
|
+
subscribe(parent, child, onFulfillment, onRejection);
|
767
|
+
}
|
1015
768
|
|
1016
|
-
|
1017
|
-
|
1018
|
-
var lib$es6$promise$$internal$$REJECTED = 2;
|
769
|
+
return child;
|
770
|
+
}
|
1019
771
|
|
1020
|
-
|
772
|
+
/**
|
773
|
+
`Promise.resolve` returns a promise that will become resolved with the
|
774
|
+
passed `value`. It is shorthand for the following:
|
1021
775
|
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
776
|
+
```javascript
|
777
|
+
let promise = new Promise(function(resolve, reject){
|
778
|
+
resolve(1);
|
779
|
+
});
|
1025
780
|
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
781
|
+
promise.then(function(value){
|
782
|
+
// value === 1
|
783
|
+
});
|
784
|
+
```
|
1029
785
|
|
1030
|
-
|
1031
|
-
try {
|
1032
|
-
return promise.then;
|
1033
|
-
} catch(error) {
|
1034
|
-
lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;
|
1035
|
-
return lib$es6$promise$$internal$$GET_THEN_ERROR;
|
1036
|
-
}
|
1037
|
-
}
|
786
|
+
Instead of writing the above, your code now simply becomes the following:
|
1038
787
|
|
1039
|
-
|
1040
|
-
|
1041
|
-
then.call(value, fulfillmentHandler, rejectionHandler);
|
1042
|
-
} catch(e) {
|
1043
|
-
return e;
|
1044
|
-
}
|
1045
|
-
}
|
788
|
+
```javascript
|
789
|
+
let promise = Promise.resolve(1);
|
1046
790
|
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
791
|
+
promise.then(function(value){
|
792
|
+
// value === 1
|
793
|
+
});
|
794
|
+
```
|
795
|
+
|
796
|
+
@method resolve
|
797
|
+
@static
|
798
|
+
@param {Any} value value that the returned promise will be resolved with
|
799
|
+
Useful for tooling.
|
800
|
+
@return {Promise} a promise that will become fulfilled with the given
|
801
|
+
`value`
|
802
|
+
*/
|
803
|
+
function resolve(object) {
|
804
|
+
/*jshint validthis:true */
|
805
|
+
var Constructor = this;
|
1061
806
|
|
1062
|
-
|
1063
|
-
|
807
|
+
if (object && typeof object === 'object' && object.constructor === Constructor) {
|
808
|
+
return object;
|
809
|
+
}
|
1064
810
|
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
}, promise);
|
1070
|
-
}
|
811
|
+
var promise = new Constructor(noop);
|
812
|
+
_resolve(promise, object);
|
813
|
+
return promise;
|
814
|
+
}
|
1071
815
|
|
1072
|
-
|
1073
|
-
if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {
|
1074
|
-
lib$es6$promise$$internal$$fulfill(promise, thenable._result);
|
1075
|
-
} else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {
|
1076
|
-
lib$es6$promise$$internal$$reject(promise, thenable._result);
|
1077
|
-
} else {
|
1078
|
-
lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {
|
1079
|
-
lib$es6$promise$$internal$$resolve(promise, value);
|
1080
|
-
}, function(reason) {
|
1081
|
-
lib$es6$promise$$internal$$reject(promise, reason);
|
1082
|
-
});
|
1083
|
-
}
|
1084
|
-
}
|
816
|
+
var PROMISE_ID = Math.random().toString(36).substring(16);
|
1085
817
|
|
1086
|
-
|
1087
|
-
if (maybeThenable.constructor === promise.constructor &&
|
1088
|
-
then === lib$es6$promise$then$$default &&
|
1089
|
-
constructor.resolve === lib$es6$promise$promise$resolve$$default) {
|
1090
|
-
lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);
|
1091
|
-
} else {
|
1092
|
-
if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {
|
1093
|
-
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);
|
1094
|
-
} else if (then === undefined) {
|
1095
|
-
lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
|
1096
|
-
} else if (lib$es6$promise$utils$$isFunction(then)) {
|
1097
|
-
lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);
|
1098
|
-
} else {
|
1099
|
-
lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
|
1100
|
-
}
|
1101
|
-
}
|
1102
|
-
}
|
818
|
+
function noop() {}
|
1103
819
|
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
} else if (lib$es6$promise$utils$$objectOrFunction(value)) {
|
1108
|
-
lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));
|
1109
|
-
} else {
|
1110
|
-
lib$es6$promise$$internal$$fulfill(promise, value);
|
1111
|
-
}
|
1112
|
-
}
|
820
|
+
var PENDING = void 0;
|
821
|
+
var FULFILLED = 1;
|
822
|
+
var REJECTED = 2;
|
1113
823
|
|
1114
|
-
|
1115
|
-
if (promise._onerror) {
|
1116
|
-
promise._onerror(promise._result);
|
1117
|
-
}
|
824
|
+
var GET_THEN_ERROR = new ErrorObject();
|
1118
825
|
|
1119
|
-
|
1120
|
-
|
826
|
+
function selfFulfillment() {
|
827
|
+
return new TypeError("You cannot resolve a promise with itself");
|
828
|
+
}
|
1121
829
|
|
1122
|
-
|
1123
|
-
|
830
|
+
function cannotReturnOwn() {
|
831
|
+
return new TypeError('A promises callback cannot return that same promise.');
|
832
|
+
}
|
833
|
+
|
834
|
+
function getThen(promise) {
|
835
|
+
try {
|
836
|
+
return promise.then;
|
837
|
+
} catch (error) {
|
838
|
+
GET_THEN_ERROR.error = error;
|
839
|
+
return GET_THEN_ERROR;
|
840
|
+
}
|
841
|
+
}
|
1124
842
|
|
1125
|
-
|
1126
|
-
|
843
|
+
function tryThen(then, value, fulfillmentHandler, rejectionHandler) {
|
844
|
+
try {
|
845
|
+
then.call(value, fulfillmentHandler, rejectionHandler);
|
846
|
+
} catch (e) {
|
847
|
+
return e;
|
848
|
+
}
|
849
|
+
}
|
1127
850
|
|
1128
|
-
|
1129
|
-
|
851
|
+
function handleForeignThenable(promise, thenable, then) {
|
852
|
+
asap(function (promise) {
|
853
|
+
var sealed = false;
|
854
|
+
var error = tryThen(then, thenable, function (value) {
|
855
|
+
if (sealed) {
|
856
|
+
return;
|
1130
857
|
}
|
1131
|
-
|
858
|
+
sealed = true;
|
859
|
+
if (thenable !== value) {
|
860
|
+
_resolve(promise, value);
|
861
|
+
} else {
|
862
|
+
fulfill(promise, value);
|
863
|
+
}
|
864
|
+
}, function (reason) {
|
865
|
+
if (sealed) {
|
866
|
+
return;
|
867
|
+
}
|
868
|
+
sealed = true;
|
1132
869
|
|
1133
|
-
|
1134
|
-
|
1135
|
-
promise._state = lib$es6$promise$$internal$$REJECTED;
|
1136
|
-
promise._result = reason;
|
870
|
+
_reject(promise, reason);
|
871
|
+
}, 'Settle: ' + (promise._label || ' unknown promise'));
|
1137
872
|
|
1138
|
-
|
873
|
+
if (!sealed && error) {
|
874
|
+
sealed = true;
|
875
|
+
_reject(promise, error);
|
1139
876
|
}
|
877
|
+
}, promise);
|
878
|
+
}
|
1140
879
|
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
880
|
+
function handleOwnThenable(promise, thenable) {
|
881
|
+
if (thenable._state === FULFILLED) {
|
882
|
+
fulfill(promise, thenable._result);
|
883
|
+
} else if (thenable._state === REJECTED) {
|
884
|
+
_reject(promise, thenable._result);
|
885
|
+
} else {
|
886
|
+
subscribe(thenable, undefined, function (value) {
|
887
|
+
return _resolve(promise, value);
|
888
|
+
}, function (reason) {
|
889
|
+
return _reject(promise, reason);
|
890
|
+
});
|
891
|
+
}
|
892
|
+
}
|
1144
893
|
|
1145
|
-
|
894
|
+
function handleMaybeThenable(promise, maybeThenable, then$$) {
|
895
|
+
if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {
|
896
|
+
handleOwnThenable(promise, maybeThenable);
|
897
|
+
} else {
|
898
|
+
if (then$$ === GET_THEN_ERROR) {
|
899
|
+
_reject(promise, GET_THEN_ERROR.error);
|
900
|
+
} else if (then$$ === undefined) {
|
901
|
+
fulfill(promise, maybeThenable);
|
902
|
+
} else if (isFunction(then$$)) {
|
903
|
+
handleForeignThenable(promise, maybeThenable, then$$);
|
904
|
+
} else {
|
905
|
+
fulfill(promise, maybeThenable);
|
906
|
+
}
|
907
|
+
}
|
908
|
+
}
|
1146
909
|
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
910
|
+
function _resolve(promise, value) {
|
911
|
+
if (promise === value) {
|
912
|
+
_reject(promise, selfFulfillment());
|
913
|
+
} else if (objectOrFunction(value)) {
|
914
|
+
handleMaybeThenable(promise, value, getThen(value));
|
915
|
+
} else {
|
916
|
+
fulfill(promise, value);
|
917
|
+
}
|
918
|
+
}
|
1150
919
|
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
920
|
+
function publishRejection(promise) {
|
921
|
+
if (promise._onerror) {
|
922
|
+
promise._onerror(promise._result);
|
923
|
+
}
|
1155
924
|
|
1156
|
-
|
1157
|
-
|
1158
|
-
var settled = promise._state;
|
925
|
+
publish(promise);
|
926
|
+
}
|
1159
927
|
|
1160
|
-
|
928
|
+
function fulfill(promise, value) {
|
929
|
+
if (promise._state !== PENDING) {
|
930
|
+
return;
|
931
|
+
}
|
1161
932
|
|
1162
|
-
|
933
|
+
promise._result = value;
|
934
|
+
promise._state = FULFILLED;
|
1163
935
|
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
936
|
+
if (promise._subscribers.length !== 0) {
|
937
|
+
asap(publish, promise);
|
938
|
+
}
|
939
|
+
}
|
1167
940
|
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
941
|
+
function _reject(promise, reason) {
|
942
|
+
if (promise._state !== PENDING) {
|
943
|
+
return;
|
944
|
+
}
|
945
|
+
promise._state = REJECTED;
|
946
|
+
promise._result = reason;
|
1174
947
|
|
1175
|
-
|
1176
|
-
|
948
|
+
asap(publishRejection, promise);
|
949
|
+
}
|
1177
950
|
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
951
|
+
function subscribe(parent, child, onFulfillment, onRejection) {
|
952
|
+
var _subscribers = parent._subscribers;
|
953
|
+
var length = _subscribers.length;
|
1181
954
|
|
1182
|
-
|
955
|
+
parent._onerror = null;
|
1183
956
|
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
} catch(e) {
|
1188
|
-
lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;
|
1189
|
-
return lib$es6$promise$$internal$$TRY_CATCH_ERROR;
|
1190
|
-
}
|
1191
|
-
}
|
957
|
+
_subscribers[length] = child;
|
958
|
+
_subscribers[length + FULFILLED] = onFulfillment;
|
959
|
+
_subscribers[length + REJECTED] = onRejection;
|
1192
960
|
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
961
|
+
if (length === 0 && parent._state) {
|
962
|
+
asap(publish, parent);
|
963
|
+
}
|
964
|
+
}
|
1196
965
|
|
1197
|
-
|
1198
|
-
|
966
|
+
function publish(promise) {
|
967
|
+
var subscribers = promise._subscribers;
|
968
|
+
var settled = promise._state;
|
1199
969
|
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
value = null;
|
1204
|
-
} else {
|
1205
|
-
succeeded = true;
|
1206
|
-
}
|
970
|
+
if (subscribers.length === 0) {
|
971
|
+
return;
|
972
|
+
}
|
1207
973
|
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
}
|
974
|
+
var child = undefined,
|
975
|
+
callback = undefined,
|
976
|
+
detail = promise._result;
|
1212
977
|
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
}
|
978
|
+
for (var i = 0; i < subscribers.length; i += 3) {
|
979
|
+
child = subscribers[i];
|
980
|
+
callback = subscribers[i + settled];
|
1217
981
|
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
} else if (failed) {
|
1223
|
-
lib$es6$promise$$internal$$reject(promise, error);
|
1224
|
-
} else if (settled === lib$es6$promise$$internal$$FULFILLED) {
|
1225
|
-
lib$es6$promise$$internal$$fulfill(promise, value);
|
1226
|
-
} else if (settled === lib$es6$promise$$internal$$REJECTED) {
|
1227
|
-
lib$es6$promise$$internal$$reject(promise, value);
|
1228
|
-
}
|
982
|
+
if (child) {
|
983
|
+
invokeCallback(settled, child, callback, detail);
|
984
|
+
} else {
|
985
|
+
callback(detail);
|
1229
986
|
}
|
987
|
+
}
|
1230
988
|
|
1231
|
-
|
1232
|
-
|
1233
|
-
resolver(function resolvePromise(value){
|
1234
|
-
lib$es6$promise$$internal$$resolve(promise, value);
|
1235
|
-
}, function rejectPromise(reason) {
|
1236
|
-
lib$es6$promise$$internal$$reject(promise, reason);
|
1237
|
-
});
|
1238
|
-
} catch(e) {
|
1239
|
-
lib$es6$promise$$internal$$reject(promise, e);
|
1240
|
-
}
|
1241
|
-
}
|
989
|
+
promise._subscribers.length = 0;
|
990
|
+
}
|
1242
991
|
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
}
|
992
|
+
function ErrorObject() {
|
993
|
+
this.error = null;
|
994
|
+
}
|
1247
995
|
|
1248
|
-
|
1249
|
-
promise[lib$es6$promise$$internal$$PROMISE_ID] = lib$es6$promise$$internal$$id++;
|
1250
|
-
promise._state = undefined;
|
1251
|
-
promise._result = undefined;
|
1252
|
-
promise._subscribers = [];
|
1253
|
-
}
|
996
|
+
var TRY_CATCH_ERROR = new ErrorObject();
|
1254
997
|
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
for (var i = 0; i < length; i++) {
|
1271
|
-
Constructor.resolve(entries[i]).then(resolve, reject);
|
1272
|
-
}
|
1273
|
-
});
|
1274
|
-
}
|
1275
|
-
}
|
1276
|
-
var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;
|
1277
|
-
function lib$es6$promise$promise$reject$$reject(reason) {
|
1278
|
-
/*jshint validthis:true */
|
1279
|
-
var Constructor = this;
|
1280
|
-
var promise = new Constructor(lib$es6$promise$$internal$$noop);
|
1281
|
-
lib$es6$promise$$internal$$reject(promise, reason);
|
1282
|
-
return promise;
|
1283
|
-
}
|
1284
|
-
var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;
|
998
|
+
function tryCatch(callback, detail) {
|
999
|
+
try {
|
1000
|
+
return callback(detail);
|
1001
|
+
} catch (e) {
|
1002
|
+
TRY_CATCH_ERROR.error = e;
|
1003
|
+
return TRY_CATCH_ERROR;
|
1004
|
+
}
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
function invokeCallback(settled, promise, callback, detail) {
|
1008
|
+
var hasCallback = isFunction(callback),
|
1009
|
+
value = undefined,
|
1010
|
+
error = undefined,
|
1011
|
+
succeeded = undefined,
|
1012
|
+
failed = undefined;
|
1285
1013
|
|
1014
|
+
if (hasCallback) {
|
1015
|
+
value = tryCatch(callback, detail);
|
1286
1016
|
|
1287
|
-
|
1288
|
-
|
1017
|
+
if (value === TRY_CATCH_ERROR) {
|
1018
|
+
failed = true;
|
1019
|
+
error = value.error;
|
1020
|
+
value = null;
|
1021
|
+
} else {
|
1022
|
+
succeeded = true;
|
1289
1023
|
}
|
1290
1024
|
|
1291
|
-
|
1292
|
-
|
1025
|
+
if (promise === value) {
|
1026
|
+
_reject(promise, cannotReturnOwn());
|
1027
|
+
return;
|
1293
1028
|
}
|
1029
|
+
} else {
|
1030
|
+
value = detail;
|
1031
|
+
succeeded = true;
|
1032
|
+
}
|
1033
|
+
|
1034
|
+
if (promise._state !== PENDING) {
|
1035
|
+
// noop
|
1036
|
+
} else if (hasCallback && succeeded) {
|
1037
|
+
_resolve(promise, value);
|
1038
|
+
} else if (failed) {
|
1039
|
+
_reject(promise, error);
|
1040
|
+
} else if (settled === FULFILLED) {
|
1041
|
+
fulfill(promise, value);
|
1042
|
+
} else if (settled === REJECTED) {
|
1043
|
+
_reject(promise, value);
|
1044
|
+
}
|
1045
|
+
}
|
1294
1046
|
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1047
|
+
function initializePromise(promise, resolver) {
|
1048
|
+
try {
|
1049
|
+
resolver(function resolvePromise(value) {
|
1050
|
+
_resolve(promise, value);
|
1051
|
+
}, function rejectPromise(reason) {
|
1052
|
+
_reject(promise, reason);
|
1053
|
+
});
|
1054
|
+
} catch (e) {
|
1055
|
+
_reject(promise, e);
|
1056
|
+
}
|
1057
|
+
}
|
1301
1058
|
|
1302
|
-
|
1303
|
-
|
1059
|
+
var id = 0;
|
1060
|
+
function nextId() {
|
1061
|
+
return id++;
|
1062
|
+
}
|
1304
1063
|
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1064
|
+
function makePromise(promise) {
|
1065
|
+
promise[PROMISE_ID] = id++;
|
1066
|
+
promise._state = undefined;
|
1067
|
+
promise._result = undefined;
|
1068
|
+
promise._subscribers = [];
|
1069
|
+
}
|
1311
1070
|
|
1312
|
-
|
1071
|
+
function Enumerator(Constructor, input) {
|
1072
|
+
this._instanceConstructor = Constructor;
|
1073
|
+
this.promise = new Constructor(noop);
|
1313
1074
|
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1075
|
+
if (!this.promise[PROMISE_ID]) {
|
1076
|
+
makePromise(this.promise);
|
1077
|
+
}
|
1317
1078
|
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
itself fulfill.
|
1079
|
+
if (isArray(input)) {
|
1080
|
+
this._input = input;
|
1081
|
+
this.length = input.length;
|
1082
|
+
this._remaining = input.length;
|
1323
1083
|
|
1084
|
+
this._result = new Array(this.length);
|
1324
1085
|
|
1325
|
-
|
1326
|
-
|
1086
|
+
if (this.length === 0) {
|
1087
|
+
fulfill(this.promise, this._result);
|
1088
|
+
} else {
|
1089
|
+
this.length = this.length || 0;
|
1090
|
+
this._enumerate();
|
1091
|
+
if (this._remaining === 0) {
|
1092
|
+
fulfill(this.promise, this._result);
|
1093
|
+
}
|
1094
|
+
}
|
1095
|
+
} else {
|
1096
|
+
_reject(this.promise, validationError());
|
1097
|
+
}
|
1098
|
+
}
|
1327
1099
|
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
resolve(value);
|
1100
|
+
function validationError() {
|
1101
|
+
return new Error('Array Methods must be provided an Array');
|
1102
|
+
};
|
1332
1103
|
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1104
|
+
Enumerator.prototype._enumerate = function () {
|
1105
|
+
var length = this.length;
|
1106
|
+
var _input = this._input;
|
1336
1107
|
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
});
|
1342
|
-
```
|
1343
|
-
|
1344
|
-
Advanced Usage:
|
1345
|
-
---------------
|
1346
|
-
|
1347
|
-
Promises shine when abstracting away asynchronous interactions such as
|
1348
|
-
`XMLHttpRequest`s.
|
1349
|
-
|
1350
|
-
```js
|
1351
|
-
function getJSON(url) {
|
1352
|
-
return new Promise(function(resolve, reject){
|
1353
|
-
var xhr = new XMLHttpRequest();
|
1354
|
-
|
1355
|
-
xhr.open('GET', url);
|
1356
|
-
xhr.onreadystatechange = handler;
|
1357
|
-
xhr.responseType = 'json';
|
1358
|
-
xhr.setRequestHeader('Accept', 'application/json');
|
1359
|
-
xhr.send();
|
1360
|
-
|
1361
|
-
function handler() {
|
1362
|
-
if (this.readyState === this.DONE) {
|
1363
|
-
if (this.status === 200) {
|
1364
|
-
resolve(this.response);
|
1365
|
-
} else {
|
1366
|
-
reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
|
1367
|
-
}
|
1368
|
-
}
|
1369
|
-
};
|
1370
|
-
});
|
1371
|
-
}
|
1108
|
+
for (var i = 0; this._state === PENDING && i < length; i++) {
|
1109
|
+
this._eachEntry(_input[i], i);
|
1110
|
+
}
|
1111
|
+
};
|
1372
1112
|
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1113
|
+
Enumerator.prototype._eachEntry = function (entry, i) {
|
1114
|
+
var c = this._instanceConstructor;
|
1115
|
+
var resolve$$ = c.resolve;
|
1116
|
+
|
1117
|
+
if (resolve$$ === resolve) {
|
1118
|
+
var _then = getThen(entry);
|
1119
|
+
|
1120
|
+
if (_then === then && entry._state !== PENDING) {
|
1121
|
+
this._settledAt(entry._state, i, entry._result);
|
1122
|
+
} else if (typeof _then !== 'function') {
|
1123
|
+
this._remaining--;
|
1124
|
+
this._result[i] = entry;
|
1125
|
+
} else if (c === Promise) {
|
1126
|
+
var promise = new c(noop);
|
1127
|
+
handleMaybeThenable(promise, entry, _then);
|
1128
|
+
this._willSettleAt(promise, i);
|
1129
|
+
} else {
|
1130
|
+
this._willSettleAt(new c(function (resolve$$) {
|
1131
|
+
return resolve$$(entry);
|
1132
|
+
}), i);
|
1133
|
+
}
|
1134
|
+
} else {
|
1135
|
+
this._willSettleAt(resolve$$(entry), i);
|
1136
|
+
}
|
1137
|
+
};
|
1379
1138
|
|
1380
|
-
|
1139
|
+
Enumerator.prototype._settledAt = function (state, i, value) {
|
1140
|
+
var promise = this.promise;
|
1381
1141
|
|
1382
|
-
|
1383
|
-
|
1384
|
-
getJSON('/posts'),
|
1385
|
-
getJSON('/comments')
|
1386
|
-
]).then(function(values){
|
1387
|
-
values[0] // => postsJSON
|
1388
|
-
values[1] // => commentsJSON
|
1142
|
+
if (promise._state === PENDING) {
|
1143
|
+
this._remaining--;
|
1389
1144
|
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
@class Promise
|
1395
|
-
@param {function} resolver
|
1396
|
-
Useful for tooling.
|
1397
|
-
@constructor
|
1398
|
-
*/
|
1399
|
-
function lib$es6$promise$promise$$Promise(resolver) {
|
1400
|
-
this[lib$es6$promise$$internal$$PROMISE_ID] = lib$es6$promise$$internal$$nextId();
|
1401
|
-
this._result = this._state = undefined;
|
1402
|
-
this._subscribers = [];
|
1403
|
-
|
1404
|
-
if (lib$es6$promise$$internal$$noop !== resolver) {
|
1405
|
-
typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();
|
1406
|
-
this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();
|
1407
|
-
}
|
1145
|
+
if (state === REJECTED) {
|
1146
|
+
_reject(promise, value);
|
1147
|
+
} else {
|
1148
|
+
this._result[i] = value;
|
1408
1149
|
}
|
1150
|
+
}
|
1409
1151
|
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;
|
1415
|
-
lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;
|
1416
|
-
lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;
|
1417
|
-
|
1418
|
-
lib$es6$promise$promise$$Promise.prototype = {
|
1419
|
-
constructor: lib$es6$promise$promise$$Promise,
|
1420
|
-
|
1421
|
-
/**
|
1422
|
-
The primary way of interacting with a promise is through its `then` method,
|
1423
|
-
which registers callbacks to receive either a promise's eventual value or the
|
1424
|
-
reason why the promise cannot be fulfilled.
|
1425
|
-
|
1426
|
-
```js
|
1427
|
-
findUser().then(function(user){
|
1428
|
-
// user is available
|
1429
|
-
}, function(reason){
|
1430
|
-
// user is unavailable, and you are given the reason why
|
1431
|
-
});
|
1432
|
-
```
|
1433
|
-
|
1434
|
-
Chaining
|
1435
|
-
--------
|
1436
|
-
|
1437
|
-
The return value of `then` is itself a promise. This second, 'downstream'
|
1438
|
-
promise is resolved with the return value of the first promise's fulfillment
|
1439
|
-
or rejection handler, or rejected if the handler throws an exception.
|
1440
|
-
|
1441
|
-
```js
|
1442
|
-
findUser().then(function (user) {
|
1443
|
-
return user.name;
|
1444
|
-
}, function (reason) {
|
1445
|
-
return 'default name';
|
1446
|
-
}).then(function (userName) {
|
1447
|
-
// If `findUser` fulfilled, `userName` will be the user's name, otherwise it
|
1448
|
-
// will be `'default name'`
|
1449
|
-
});
|
1152
|
+
if (this._remaining === 0) {
|
1153
|
+
fulfill(promise, this._result);
|
1154
|
+
}
|
1155
|
+
};
|
1450
1156
|
|
1451
|
-
|
1452
|
-
|
1453
|
-
}, function (reason) {
|
1454
|
-
throw new Error('`findUser` rejected and we're unhappy');
|
1455
|
-
}).then(function (value) {
|
1456
|
-
// never reached
|
1457
|
-
}, function (reason) {
|
1458
|
-
// if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
|
1459
|
-
// If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
|
1460
|
-
});
|
1461
|
-
```
|
1462
|
-
If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
|
1463
|
-
|
1464
|
-
```js
|
1465
|
-
findUser().then(function (user) {
|
1466
|
-
throw new PedagogicalException('Upstream error');
|
1467
|
-
}).then(function (value) {
|
1468
|
-
// never reached
|
1469
|
-
}).then(function (value) {
|
1470
|
-
// never reached
|
1471
|
-
}, function (reason) {
|
1472
|
-
// The `PedgagocialException` is propagated all the way down to here
|
1473
|
-
});
|
1474
|
-
```
|
1157
|
+
Enumerator.prototype._willSettleAt = function (promise, i) {
|
1158
|
+
var enumerator = this;
|
1475
1159
|
|
1476
|
-
|
1477
|
-
|
1160
|
+
subscribe(promise, undefined, function (value) {
|
1161
|
+
return enumerator._settledAt(FULFILLED, i, value);
|
1162
|
+
}, function (reason) {
|
1163
|
+
return enumerator._settledAt(REJECTED, i, reason);
|
1164
|
+
});
|
1165
|
+
};
|
1478
1166
|
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1167
|
+
/**
|
1168
|
+
`Promise.all` accepts an array of promises, and returns a new promise which
|
1169
|
+
is fulfilled with an array of fulfillment values for the passed promises, or
|
1170
|
+
rejected with the reason of the first passed promise to be rejected. It casts all
|
1171
|
+
elements of the passed iterable to promises as it runs this algorithm.
|
1483
1172
|
|
1484
|
-
|
1485
|
-
findUser().then(function (user) {
|
1486
|
-
return findCommentsByAuthor(user);
|
1487
|
-
}).then(function (comments) {
|
1488
|
-
// The user's comments are now available
|
1489
|
-
});
|
1490
|
-
```
|
1173
|
+
Example:
|
1491
1174
|
|
1492
|
-
|
1175
|
+
```javascript
|
1176
|
+
let promise1 = resolve(1);
|
1177
|
+
let promise2 = resolve(2);
|
1178
|
+
let promise3 = resolve(3);
|
1179
|
+
let promises = [ promise1, promise2, promise3 ];
|
1493
1180
|
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1498
|
-
// If `findCommentsByAuthor` fulfills, we'll have the value here
|
1499
|
-
}, function (reason) {
|
1500
|
-
// If `findCommentsByAuthor` rejects, we'll have the reason here
|
1501
|
-
});
|
1502
|
-
```
|
1181
|
+
Promise.all(promises).then(function(array){
|
1182
|
+
// The array here would be [ 1, 2, 3 ];
|
1183
|
+
});
|
1184
|
+
```
|
1503
1185
|
|
1504
|
-
|
1505
|
-
|
1186
|
+
If any of the `promises` given to `all` are rejected, the first promise
|
1187
|
+
that is rejected will be given as an argument to the returned promises's
|
1188
|
+
rejection handler. For example:
|
1506
1189
|
|
1507
|
-
|
1190
|
+
Example:
|
1508
1191
|
|
1509
|
-
|
1510
|
-
|
1192
|
+
```javascript
|
1193
|
+
let promise1 = resolve(1);
|
1194
|
+
let promise2 = reject(new Error("2"));
|
1195
|
+
let promise3 = reject(new Error("3"));
|
1196
|
+
let promises = [ promise1, promise2, promise3 ];
|
1511
1197
|
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1198
|
+
Promise.all(promises).then(function(array){
|
1199
|
+
// Code here never runs because there are rejected promises!
|
1200
|
+
}, function(error) {
|
1201
|
+
// error.message === "2"
|
1202
|
+
});
|
1203
|
+
```
|
1204
|
+
|
1205
|
+
@method all
|
1206
|
+
@static
|
1207
|
+
@param {Array} entries array of promises
|
1208
|
+
@param {String} label optional string for labeling the promise.
|
1209
|
+
Useful for tooling.
|
1210
|
+
@return {Promise} promise that is fulfilled when all `promises` have been
|
1211
|
+
fulfilled, or rejected if any of them become rejected.
|
1212
|
+
@static
|
1213
|
+
*/
|
1214
|
+
function all(entries) {
|
1215
|
+
return new Enumerator(this, entries).promise;
|
1216
|
+
}
|
1519
1217
|
|
1520
|
-
|
1218
|
+
/**
|
1219
|
+
`Promise.race` returns a new promise which is settled in the same way as the
|
1220
|
+
first passed promise to settle.
|
1521
1221
|
|
1522
|
-
|
1523
|
-
findResult(function(result, err){
|
1524
|
-
if (err) {
|
1525
|
-
// failure
|
1526
|
-
} else {
|
1527
|
-
// success
|
1528
|
-
}
|
1529
|
-
});
|
1530
|
-
```
|
1222
|
+
Example:
|
1531
1223
|
|
1532
|
-
|
1224
|
+
```javascript
|
1225
|
+
let promise1 = new Promise(function(resolve, reject){
|
1226
|
+
setTimeout(function(){
|
1227
|
+
resolve('promise 1');
|
1228
|
+
}, 200);
|
1229
|
+
});
|
1533
1230
|
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
});
|
1540
|
-
```
|
1231
|
+
let promise2 = new Promise(function(resolve, reject){
|
1232
|
+
setTimeout(function(){
|
1233
|
+
resolve('promise 2');
|
1234
|
+
}, 100);
|
1235
|
+
});
|
1541
1236
|
|
1542
|
-
|
1543
|
-
|
1237
|
+
Promise.race([promise1, promise2]).then(function(result){
|
1238
|
+
// result === 'promise 2' because it was resolved before promise1
|
1239
|
+
// was resolved.
|
1240
|
+
});
|
1241
|
+
```
|
1242
|
+
|
1243
|
+
`Promise.race` is deterministic in that only the state of the first
|
1244
|
+
settled promise matters. For example, even if other promises given to the
|
1245
|
+
`promises` array argument are resolved, but the first settled promise has
|
1246
|
+
become rejected before the other promises became fulfilled, the returned
|
1247
|
+
promise will become rejected:
|
1248
|
+
|
1249
|
+
```javascript
|
1250
|
+
let promise1 = new Promise(function(resolve, reject){
|
1251
|
+
setTimeout(function(){
|
1252
|
+
resolve('promise 1');
|
1253
|
+
}, 200);
|
1254
|
+
});
|
1544
1255
|
|
1545
|
-
|
1256
|
+
let promise2 = new Promise(function(resolve, reject){
|
1257
|
+
setTimeout(function(){
|
1258
|
+
reject(new Error('promise 2'));
|
1259
|
+
}, 100);
|
1260
|
+
});
|
1546
1261
|
|
1547
|
-
|
1548
|
-
|
1262
|
+
Promise.race([promise1, promise2]).then(function(result){
|
1263
|
+
// Code here never runs
|
1264
|
+
}, function(reason){
|
1265
|
+
// reason.message === 'promise 2' because promise 2 became rejected before
|
1266
|
+
// promise 1 became fulfilled
|
1267
|
+
});
|
1268
|
+
```
|
1549
1269
|
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
|
1554
|
-
|
1555
|
-
|
1270
|
+
An example real-world use case is implementing timeouts:
|
1271
|
+
|
1272
|
+
```javascript
|
1273
|
+
Promise.race([ajax('foo.json'), timeout(5000)])
|
1274
|
+
```
|
1275
|
+
|
1276
|
+
@method race
|
1277
|
+
@static
|
1278
|
+
@param {Array} promises array of promises to observe
|
1279
|
+
Useful for tooling.
|
1280
|
+
@return {Promise} a promise which settles in the same way as the first passed
|
1281
|
+
promise to settle.
|
1282
|
+
*/
|
1283
|
+
function race(entries) {
|
1284
|
+
/*jshint validthis:true */
|
1285
|
+
var Constructor = this;
|
1286
|
+
|
1287
|
+
if (!isArray(entries)) {
|
1288
|
+
return new Constructor(function (_, reject) {
|
1289
|
+
return reject(new TypeError('You must pass an array to race.'));
|
1290
|
+
});
|
1291
|
+
} else {
|
1292
|
+
return new Constructor(function (resolve, reject) {
|
1293
|
+
var length = entries.length;
|
1294
|
+
for (var i = 0; i < length; i++) {
|
1295
|
+
Constructor.resolve(entries[i]).then(resolve, reject);
|
1556
1296
|
}
|
1557
|
-
|
1297
|
+
});
|
1298
|
+
}
|
1299
|
+
}
|
1558
1300
|
|
1559
|
-
|
1301
|
+
/**
|
1302
|
+
`Promise.reject` returns a promise rejected with the passed `reason`.
|
1303
|
+
It is shorthand for the following:
|
1560
1304
|
|
1561
|
-
|
1305
|
+
```javascript
|
1306
|
+
let promise = new Promise(function(resolve, reject){
|
1307
|
+
reject(new Error('WHOOPS'));
|
1308
|
+
});
|
1562
1309
|
|
1563
|
-
|
1310
|
+
promise.then(function(value){
|
1311
|
+
// Code here doesn't run because the promise is rejected!
|
1312
|
+
}, function(reason){
|
1313
|
+
// reason.message === 'WHOOPS'
|
1314
|
+
});
|
1315
|
+
```
|
1564
1316
|
|
1565
|
-
|
1317
|
+
Instead of writing the above, your code now simply becomes the following:
|
1566
1318
|
|
1567
|
-
|
1319
|
+
```javascript
|
1320
|
+
let promise = Promise.reject(new Error('WHOOPS'));
|
1568
1321
|
|
1569
|
-
|
1322
|
+
promise.then(function(value){
|
1323
|
+
// Code here doesn't run because the promise is rejected!
|
1324
|
+
}, function(reason){
|
1325
|
+
// reason.message === 'WHOOPS'
|
1326
|
+
});
|
1327
|
+
```
|
1570
1328
|
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
failure(reason);
|
1585
|
-
}
|
1586
|
-
}
|
1587
|
-
});
|
1588
|
-
} catch(error) {
|
1589
|
-
failure(err);
|
1590
|
-
}
|
1591
|
-
// success
|
1592
|
-
}
|
1593
|
-
});
|
1594
|
-
```
|
1329
|
+
@method reject
|
1330
|
+
@static
|
1331
|
+
@param {Any} reason value that the returned promise will be rejected with.
|
1332
|
+
Useful for tooling.
|
1333
|
+
@return {Promise} a promise rejected with the given `reason`.
|
1334
|
+
*/
|
1335
|
+
function reject(reason) {
|
1336
|
+
/*jshint validthis:true */
|
1337
|
+
var Constructor = this;
|
1338
|
+
var promise = new Constructor(noop);
|
1339
|
+
_reject(promise, reason);
|
1340
|
+
return promise;
|
1341
|
+
}
|
1595
1342
|
|
1596
|
-
|
1343
|
+
function needsResolver() {
|
1344
|
+
throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
|
1345
|
+
}
|
1597
1346
|
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
then(function(books){
|
1602
|
-
// found books
|
1603
|
-
}).catch(function(reason){
|
1604
|
-
// something went wrong
|
1605
|
-
});
|
1606
|
-
```
|
1607
|
-
|
1608
|
-
@method then
|
1609
|
-
@param {Function} onFulfilled
|
1610
|
-
@param {Function} onRejected
|
1611
|
-
Useful for tooling.
|
1612
|
-
@return {Promise}
|
1613
|
-
*/
|
1614
|
-
then: lib$es6$promise$then$$default,
|
1615
|
-
|
1616
|
-
/**
|
1617
|
-
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
|
1618
|
-
as the catch block of a try/catch statement.
|
1619
|
-
|
1620
|
-
```js
|
1621
|
-
function findAuthor(){
|
1622
|
-
throw new Error('couldn't find that author');
|
1623
|
-
}
|
1347
|
+
function needsNew() {
|
1348
|
+
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
|
1349
|
+
}
|
1624
1350
|
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
1630
|
-
}
|
1351
|
+
/**
|
1352
|
+
Promise objects represent the eventual result of an asynchronous operation. The
|
1353
|
+
primary way of interacting with a promise is through its `then` method, which
|
1354
|
+
registers callbacks to receive either a promise's eventual value or the reason
|
1355
|
+
why the promise cannot be fulfilled.
|
1631
1356
|
|
1632
|
-
|
1633
|
-
|
1634
|
-
// something went wrong
|
1635
|
-
});
|
1636
|
-
```
|
1637
|
-
|
1638
|
-
@method catch
|
1639
|
-
@param {Function} onRejection
|
1640
|
-
Useful for tooling.
|
1641
|
-
@return {Promise}
|
1642
|
-
*/
|
1643
|
-
'catch': function(onRejection) {
|
1644
|
-
return this.then(null, onRejection);
|
1645
|
-
}
|
1646
|
-
};
|
1647
|
-
var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;
|
1648
|
-
function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {
|
1649
|
-
this._instanceConstructor = Constructor;
|
1650
|
-
this.promise = new Constructor(lib$es6$promise$$internal$$noop);
|
1357
|
+
Terminology
|
1358
|
+
-----------
|
1651
1359
|
|
1652
|
-
|
1653
|
-
|
1654
|
-
|
1360
|
+
- `promise` is an object or function with a `then` method whose behavior conforms to this specification.
|
1361
|
+
- `thenable` is an object or function that defines a `then` method.
|
1362
|
+
- `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
|
1363
|
+
- `exception` is a value that is thrown using the throw statement.
|
1364
|
+
- `reason` is a value that indicates why a promise was rejected.
|
1365
|
+
- `settled` the final resting state of a promise, fulfilled or rejected.
|
1655
1366
|
|
1656
|
-
|
1657
|
-
this._input = input;
|
1658
|
-
this.length = input.length;
|
1659
|
-
this._remaining = input.length;
|
1367
|
+
A promise can be in one of three states: pending, fulfilled, or rejected.
|
1660
1368
|
|
1661
|
-
|
1369
|
+
Promises that are fulfilled have a fulfillment value and are in the fulfilled
|
1370
|
+
state. Promises that are rejected have a rejection reason and are in the
|
1371
|
+
rejected state. A fulfillment value is never a thenable.
|
1662
1372
|
|
1663
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
if (this._remaining === 0) {
|
1669
|
-
lib$es6$promise$$internal$$fulfill(this.promise, this._result);
|
1670
|
-
}
|
1671
|
-
}
|
1672
|
-
} else {
|
1673
|
-
lib$es6$promise$$internal$$reject(this.promise, lib$es6$promise$enumerator$$validationError());
|
1674
|
-
}
|
1675
|
-
}
|
1373
|
+
Promises can also be said to *resolve* a value. If this value is also a
|
1374
|
+
promise, then the original promise's settled state will match the value's
|
1375
|
+
settled state. So a promise that *resolves* a promise that rejects will
|
1376
|
+
itself reject, and a promise that *resolves* a promise that fulfills will
|
1377
|
+
itself fulfill.
|
1676
1378
|
|
1677
|
-
function lib$es6$promise$enumerator$$validationError() {
|
1678
|
-
return new Error('Array Methods must be provided an Array');
|
1679
|
-
}
|
1680
1379
|
|
1681
|
-
|
1682
|
-
|
1683
|
-
var input = this._input;
|
1380
|
+
Basic Usage:
|
1381
|
+
------------
|
1684
1382
|
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1383
|
+
```js
|
1384
|
+
let promise = new Promise(function(resolve, reject) {
|
1385
|
+
// on success
|
1386
|
+
resolve(value);
|
1689
1387
|
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
if (resolve === lib$es6$promise$promise$resolve$$default) {
|
1695
|
-
var then = lib$es6$promise$$internal$$getThen(entry);
|
1696
|
-
|
1697
|
-
if (then === lib$es6$promise$then$$default &&
|
1698
|
-
entry._state !== lib$es6$promise$$internal$$PENDING) {
|
1699
|
-
this._settledAt(entry._state, i, entry._result);
|
1700
|
-
} else if (typeof then !== 'function') {
|
1701
|
-
this._remaining--;
|
1702
|
-
this._result[i] = entry;
|
1703
|
-
} else if (c === lib$es6$promise$promise$$default) {
|
1704
|
-
var promise = new c(lib$es6$promise$$internal$$noop);
|
1705
|
-
lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);
|
1706
|
-
this._willSettleAt(promise, i);
|
1707
|
-
} else {
|
1708
|
-
this._willSettleAt(new c(function(resolve) { resolve(entry); }), i);
|
1709
|
-
}
|
1710
|
-
} else {
|
1711
|
-
this._willSettleAt(resolve(entry), i);
|
1712
|
-
}
|
1713
|
-
};
|
1388
|
+
// on failure
|
1389
|
+
reject(reason);
|
1390
|
+
});
|
1714
1391
|
|
1715
|
-
|
1716
|
-
|
1392
|
+
promise.then(function(value) {
|
1393
|
+
// on fulfillment
|
1394
|
+
}, function(reason) {
|
1395
|
+
// on rejection
|
1396
|
+
});
|
1397
|
+
```
|
1717
1398
|
|
1718
|
-
|
1719
|
-
|
1399
|
+
Advanced Usage:
|
1400
|
+
---------------
|
1720
1401
|
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
|
1402
|
+
Promises shine when abstracting away asynchronous interactions such as
|
1403
|
+
`XMLHttpRequest`s.
|
1404
|
+
|
1405
|
+
```js
|
1406
|
+
function getJSON(url) {
|
1407
|
+
return new Promise(function(resolve, reject){
|
1408
|
+
let xhr = new XMLHttpRequest();
|
1409
|
+
|
1410
|
+
xhr.open('GET', url);
|
1411
|
+
xhr.onreadystatechange = handler;
|
1412
|
+
xhr.responseType = 'json';
|
1413
|
+
xhr.setRequestHeader('Accept', 'application/json');
|
1414
|
+
xhr.send();
|
1415
|
+
|
1416
|
+
function handler() {
|
1417
|
+
if (this.readyState === this.DONE) {
|
1418
|
+
if (this.status === 200) {
|
1419
|
+
resolve(this.response);
|
1420
|
+
} else {
|
1421
|
+
reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
|
1422
|
+
}
|
1725
1423
|
}
|
1726
|
-
}
|
1424
|
+
};
|
1425
|
+
});
|
1426
|
+
}
|
1727
1427
|
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1428
|
+
getJSON('/posts.json').then(function(json) {
|
1429
|
+
// on fulfillment
|
1430
|
+
}, function(reason) {
|
1431
|
+
// on rejection
|
1432
|
+
});
|
1433
|
+
```
|
1732
1434
|
|
1733
|
-
|
1734
|
-
var enumerator = this;
|
1435
|
+
Unlike callbacks, promises are great composable primitives.
|
1735
1436
|
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1437
|
+
```js
|
1438
|
+
Promise.all([
|
1439
|
+
getJSON('/posts'),
|
1440
|
+
getJSON('/comments')
|
1441
|
+
]).then(function(values){
|
1442
|
+
values[0] // => postsJSON
|
1443
|
+
values[1] // => commentsJSON
|
1444
|
+
|
1445
|
+
return values;
|
1446
|
+
});
|
1447
|
+
```
|
1744
1448
|
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1748
|
-
|
1449
|
+
@class Promise
|
1450
|
+
@param {function} resolver
|
1451
|
+
Useful for tooling.
|
1452
|
+
@constructor
|
1453
|
+
*/
|
1454
|
+
function Promise(resolver) {
|
1455
|
+
this[PROMISE_ID] = nextId();
|
1456
|
+
this._result = this._state = undefined;
|
1457
|
+
this._subscribers = [];
|
1458
|
+
|
1459
|
+
if (noop !== resolver) {
|
1460
|
+
typeof resolver !== 'function' && needsResolver();
|
1461
|
+
this instanceof Promise ? initializePromise(this, resolver) : needsNew();
|
1462
|
+
}
|
1463
|
+
}
|
1464
|
+
|
1465
|
+
Promise.all = all;
|
1466
|
+
Promise.race = race;
|
1467
|
+
Promise.resolve = resolve;
|
1468
|
+
Promise.reject = reject;
|
1469
|
+
Promise._setScheduler = setScheduler;
|
1470
|
+
Promise._setAsap = setAsap;
|
1471
|
+
Promise._asap = asap;
|
1472
|
+
|
1473
|
+
Promise.prototype = {
|
1474
|
+
constructor: Promise,
|
1475
|
+
|
1476
|
+
/**
|
1477
|
+
The primary way of interacting with a promise is through its `then` method,
|
1478
|
+
which registers callbacks to receive either a promise's eventual value or the
|
1479
|
+
reason why the promise cannot be fulfilled.
|
1480
|
+
|
1481
|
+
```js
|
1482
|
+
findUser().then(function(user){
|
1483
|
+
// user is available
|
1484
|
+
}, function(reason){
|
1485
|
+
// user is unavailable, and you are given the reason why
|
1486
|
+
});
|
1487
|
+
```
|
1488
|
+
|
1489
|
+
Chaining
|
1490
|
+
--------
|
1491
|
+
|
1492
|
+
The return value of `then` is itself a promise. This second, 'downstream'
|
1493
|
+
promise is resolved with the return value of the first promise's fulfillment
|
1494
|
+
or rejection handler, or rejected if the handler throws an exception.
|
1495
|
+
|
1496
|
+
```js
|
1497
|
+
findUser().then(function (user) {
|
1498
|
+
return user.name;
|
1499
|
+
}, function (reason) {
|
1500
|
+
return 'default name';
|
1501
|
+
}).then(function (userName) {
|
1502
|
+
// If `findUser` fulfilled, `userName` will be the user's name, otherwise it
|
1503
|
+
// will be `'default name'`
|
1504
|
+
});
|
1505
|
+
|
1506
|
+
findUser().then(function (user) {
|
1507
|
+
throw new Error('Found user, but still unhappy');
|
1508
|
+
}, function (reason) {
|
1509
|
+
throw new Error('`findUser` rejected and we're unhappy');
|
1510
|
+
}).then(function (value) {
|
1511
|
+
// never reached
|
1512
|
+
}, function (reason) {
|
1513
|
+
// if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
|
1514
|
+
// If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
|
1515
|
+
});
|
1516
|
+
```
|
1517
|
+
If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
|
1518
|
+
|
1519
|
+
```js
|
1520
|
+
findUser().then(function (user) {
|
1521
|
+
throw new PedagogicalException('Upstream error');
|
1522
|
+
}).then(function (value) {
|
1523
|
+
// never reached
|
1524
|
+
}).then(function (value) {
|
1525
|
+
// never reached
|
1526
|
+
}, function (reason) {
|
1527
|
+
// The `PedgagocialException` is propagated all the way down to here
|
1528
|
+
});
|
1529
|
+
```
|
1530
|
+
|
1531
|
+
Assimilation
|
1532
|
+
------------
|
1533
|
+
|
1534
|
+
Sometimes the value you want to propagate to a downstream promise can only be
|
1535
|
+
retrieved asynchronously. This can be achieved by returning a promise in the
|
1536
|
+
fulfillment or rejection handler. The downstream promise will then be pending
|
1537
|
+
until the returned promise is settled. This is called *assimilation*.
|
1538
|
+
|
1539
|
+
```js
|
1540
|
+
findUser().then(function (user) {
|
1541
|
+
return findCommentsByAuthor(user);
|
1542
|
+
}).then(function (comments) {
|
1543
|
+
// The user's comments are now available
|
1544
|
+
});
|
1545
|
+
```
|
1546
|
+
|
1547
|
+
If the assimliated promise rejects, then the downstream promise will also reject.
|
1548
|
+
|
1549
|
+
```js
|
1550
|
+
findUser().then(function (user) {
|
1551
|
+
return findCommentsByAuthor(user);
|
1552
|
+
}).then(function (comments) {
|
1553
|
+
// If `findCommentsByAuthor` fulfills, we'll have the value here
|
1554
|
+
}, function (reason) {
|
1555
|
+
// If `findCommentsByAuthor` rejects, we'll have the reason here
|
1556
|
+
});
|
1557
|
+
```
|
1558
|
+
|
1559
|
+
Simple Example
|
1560
|
+
--------------
|
1561
|
+
|
1562
|
+
Synchronous Example
|
1563
|
+
|
1564
|
+
```javascript
|
1565
|
+
let result;
|
1566
|
+
|
1567
|
+
try {
|
1568
|
+
result = findResult();
|
1569
|
+
// success
|
1570
|
+
} catch(reason) {
|
1571
|
+
// failure
|
1572
|
+
}
|
1573
|
+
```
|
1574
|
+
|
1575
|
+
Errback Example
|
1576
|
+
|
1577
|
+
```js
|
1578
|
+
findResult(function(result, err){
|
1579
|
+
if (err) {
|
1580
|
+
// failure
|
1749
1581
|
} else {
|
1750
|
-
|
1751
|
-
|
1752
|
-
|
1753
|
-
|
1754
|
-
|
1582
|
+
// success
|
1583
|
+
}
|
1584
|
+
});
|
1585
|
+
```
|
1586
|
+
|
1587
|
+
Promise Example;
|
1588
|
+
|
1589
|
+
```javascript
|
1590
|
+
findResult().then(function(result){
|
1591
|
+
// success
|
1592
|
+
}, function(reason){
|
1593
|
+
// failure
|
1594
|
+
});
|
1595
|
+
```
|
1596
|
+
|
1597
|
+
Advanced Example
|
1598
|
+
--------------
|
1599
|
+
|
1600
|
+
Synchronous Example
|
1601
|
+
|
1602
|
+
```javascript
|
1603
|
+
let author, books;
|
1604
|
+
|
1605
|
+
try {
|
1606
|
+
author = findAuthor();
|
1607
|
+
books = findBooksByAuthor(author);
|
1608
|
+
// success
|
1609
|
+
} catch(reason) {
|
1610
|
+
// failure
|
1611
|
+
}
|
1612
|
+
```
|
1613
|
+
|
1614
|
+
Errback Example
|
1615
|
+
|
1616
|
+
```js
|
1617
|
+
|
1618
|
+
function foundBooks(books) {
|
1619
|
+
|
1620
|
+
}
|
1621
|
+
|
1622
|
+
function failure(reason) {
|
1623
|
+
|
1624
|
+
}
|
1625
|
+
|
1626
|
+
findAuthor(function(author, err){
|
1627
|
+
if (err) {
|
1628
|
+
failure(err);
|
1629
|
+
// failure
|
1630
|
+
} else {
|
1631
|
+
try {
|
1632
|
+
findBoooksByAuthor(author, function(books, err) {
|
1633
|
+
if (err) {
|
1634
|
+
failure(err);
|
1635
|
+
} else {
|
1636
|
+
try {
|
1637
|
+
foundBooks(books);
|
1638
|
+
} catch(reason) {
|
1639
|
+
failure(reason);
|
1640
|
+
}
|
1641
|
+
}
|
1642
|
+
});
|
1643
|
+
} catch(error) {
|
1644
|
+
failure(err);
|
1645
|
+
}
|
1646
|
+
// success
|
1755
1647
|
}
|
1648
|
+
});
|
1649
|
+
```
|
1650
|
+
|
1651
|
+
Promise Example;
|
1652
|
+
|
1653
|
+
```javascript
|
1654
|
+
findAuthor().
|
1655
|
+
then(findBooksByAuthor).
|
1656
|
+
then(function(books){
|
1657
|
+
// found books
|
1658
|
+
}).catch(function(reason){
|
1659
|
+
// something went wrong
|
1660
|
+
});
|
1661
|
+
```
|
1662
|
+
|
1663
|
+
@method then
|
1664
|
+
@param {Function} onFulfilled
|
1665
|
+
@param {Function} onRejected
|
1666
|
+
Useful for tooling.
|
1667
|
+
@return {Promise}
|
1668
|
+
*/
|
1669
|
+
then: then,
|
1670
|
+
|
1671
|
+
/**
|
1672
|
+
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
|
1673
|
+
as the catch block of a try/catch statement.
|
1674
|
+
|
1675
|
+
```js
|
1676
|
+
function findAuthor(){
|
1677
|
+
throw new Error('couldn't find that author');
|
1678
|
+
}
|
1679
|
+
|
1680
|
+
// synchronous
|
1681
|
+
try {
|
1682
|
+
findAuthor();
|
1683
|
+
} catch(reason) {
|
1684
|
+
// something went wrong
|
1685
|
+
}
|
1686
|
+
|
1687
|
+
// async with promises
|
1688
|
+
findAuthor().catch(function(reason){
|
1689
|
+
// something went wrong
|
1690
|
+
});
|
1691
|
+
```
|
1692
|
+
|
1693
|
+
@method catch
|
1694
|
+
@param {Function} onRejection
|
1695
|
+
Useful for tooling.
|
1696
|
+
@return {Promise}
|
1697
|
+
*/
|
1698
|
+
'catch': function _catch(onRejection) {
|
1699
|
+
return this.then(null, onRejection);
|
1700
|
+
}
|
1701
|
+
};
|
1756
1702
|
|
1757
|
-
|
1703
|
+
function polyfill() {
|
1704
|
+
var local = undefined;
|
1758
1705
|
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1706
|
+
if (typeof global !== 'undefined') {
|
1707
|
+
local = global;
|
1708
|
+
} else if (typeof self !== 'undefined') {
|
1709
|
+
local = self;
|
1710
|
+
} else {
|
1711
|
+
try {
|
1712
|
+
local = Function('return this')();
|
1713
|
+
} catch (e) {
|
1714
|
+
throw new Error('polyfill failed because global object is unavailable in this environment');
|
1715
|
+
}
|
1716
|
+
}
|
1717
|
+
|
1718
|
+
var P = local.Promise;
|
1762
1719
|
|
1763
|
-
|
1720
|
+
if (P) {
|
1721
|
+
var promiseToString = null;
|
1722
|
+
try {
|
1723
|
+
promiseToString = Object.prototype.toString.call(P.resolve());
|
1724
|
+
} catch (e) {
|
1725
|
+
// silently ignored
|
1726
|
+
}
|
1727
|
+
|
1728
|
+
if (promiseToString === '[object Promise]' && !P.cast) {
|
1729
|
+
return;
|
1730
|
+
}
|
1764
1731
|
}
|
1765
|
-
var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;
|
1766
1732
|
|
1767
|
-
|
1768
|
-
|
1769
|
-
'polyfill': lib$es6$promise$polyfill$$default
|
1770
|
-
};
|
1733
|
+
local.Promise = Promise;
|
1734
|
+
}
|
1771
1735
|
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1775
|
-
} else if (typeof module !== 'undefined' && module['exports']) {
|
1776
|
-
module['exports'] = lib$es6$promise$umd$$ES6Promise;
|
1777
|
-
} else if (typeof this !== 'undefined') {
|
1778
|
-
this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;
|
1779
|
-
}
|
1736
|
+
// Strange compat..
|
1737
|
+
Promise.polyfill = polyfill;
|
1738
|
+
Promise.Promise = Promise;
|
1780
1739
|
|
1781
|
-
|
1782
|
-
}).call(this);
|
1740
|
+
return Promise;
|
1783
1741
|
|
1742
|
+
})));
|
1784
1743
|
|
1785
|
-
}).call(this,require(
|
1786
|
-
},{"
|
1744
|
+
}).call(this,require(12),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
1745
|
+
},{"12":12}],4:[function(require,module,exports){
|
1787
1746
|
// Copyright Joyent, Inc. and other Node contributors.
|
1788
1747
|
//
|
1789
1748
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
@@ -2087,76 +2046,570 @@ function isUndefined(arg) {
|
|
2087
2046
|
return arg === void 0;
|
2088
2047
|
}
|
2089
2048
|
|
2090
|
-
},{}],
|
2091
|
-
|
2092
|
-
var hasOwn = Object.prototype.hasOwnProperty;
|
2093
|
-
var toString = Object.prototype.toString;
|
2094
|
-
|
2095
|
-
module.exports = function forEach (obj, fn, ctx) {
|
2096
|
-
if (toString.call(fn) !== '[object Function]') {
|
2097
|
-
throw new TypeError('iterator must be a function');
|
2049
|
+
},{}],5:[function(require,module,exports){
|
2050
|
+
|
2051
|
+
var hasOwn = Object.prototype.hasOwnProperty;
|
2052
|
+
var toString = Object.prototype.toString;
|
2053
|
+
|
2054
|
+
module.exports = function forEach (obj, fn, ctx) {
|
2055
|
+
if (toString.call(fn) !== '[object Function]') {
|
2056
|
+
throw new TypeError('iterator must be a function');
|
2057
|
+
}
|
2058
|
+
var l = obj.length;
|
2059
|
+
if (l === +l) {
|
2060
|
+
for (var i = 0; i < l; i++) {
|
2061
|
+
fn.call(ctx, obj[i], i, obj);
|
2062
|
+
}
|
2063
|
+
} else {
|
2064
|
+
for (var k in obj) {
|
2065
|
+
if (hasOwn.call(obj, k)) {
|
2066
|
+
fn.call(ctx, obj[k], k, obj);
|
2067
|
+
}
|
2068
|
+
}
|
2069
|
+
}
|
2070
|
+
};
|
2071
|
+
|
2072
|
+
|
2073
|
+
},{}],6:[function(require,module,exports){
|
2074
|
+
(function (global){
|
2075
|
+
if (typeof window !== "undefined") {
|
2076
|
+
module.exports = window;
|
2077
|
+
} else if (typeof global !== "undefined") {
|
2078
|
+
module.exports = global;
|
2079
|
+
} else if (typeof self !== "undefined"){
|
2080
|
+
module.exports = self;
|
2081
|
+
} else {
|
2082
|
+
module.exports = {};
|
2083
|
+
}
|
2084
|
+
|
2085
|
+
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
2086
|
+
},{}],7:[function(require,module,exports){
|
2087
|
+
if (typeof Object.create === 'function') {
|
2088
|
+
// implementation from standard node.js 'util' module
|
2089
|
+
module.exports = function inherits(ctor, superCtor) {
|
2090
|
+
ctor.super_ = superCtor
|
2091
|
+
ctor.prototype = Object.create(superCtor.prototype, {
|
2092
|
+
constructor: {
|
2093
|
+
value: ctor,
|
2094
|
+
enumerable: false,
|
2095
|
+
writable: true,
|
2096
|
+
configurable: true
|
2097
|
+
}
|
2098
|
+
});
|
2099
|
+
};
|
2100
|
+
} else {
|
2101
|
+
// old school shim for old browsers
|
2102
|
+
module.exports = function inherits(ctor, superCtor) {
|
2103
|
+
ctor.super_ = superCtor
|
2104
|
+
var TempCtor = function () {}
|
2105
|
+
TempCtor.prototype = superCtor.prototype
|
2106
|
+
ctor.prototype = new TempCtor()
|
2107
|
+
ctor.prototype.constructor = ctor
|
2108
|
+
}
|
2109
|
+
}
|
2110
|
+
|
2111
|
+
},{}],8:[function(require,module,exports){
|
2112
|
+
var toString = {}.toString;
|
2113
|
+
|
2114
|
+
module.exports = Array.isArray || function (arr) {
|
2115
|
+
return toString.call(arr) == '[object Array]';
|
2116
|
+
};
|
2117
|
+
|
2118
|
+
},{}],9:[function(require,module,exports){
|
2119
|
+
/**
|
2120
|
+
* Helpers.
|
2121
|
+
*/
|
2122
|
+
|
2123
|
+
var s = 1000
|
2124
|
+
var m = s * 60
|
2125
|
+
var h = m * 60
|
2126
|
+
var d = h * 24
|
2127
|
+
var y = d * 365.25
|
2128
|
+
|
2129
|
+
/**
|
2130
|
+
* Parse or format the given `val`.
|
2131
|
+
*
|
2132
|
+
* Options:
|
2133
|
+
*
|
2134
|
+
* - `long` verbose formatting [false]
|
2135
|
+
*
|
2136
|
+
* @param {String|Number} val
|
2137
|
+
* @param {Object} options
|
2138
|
+
* @throws {Error} throw an error if val is not a non-empty string or a number
|
2139
|
+
* @return {String|Number}
|
2140
|
+
* @api public
|
2141
|
+
*/
|
2142
|
+
|
2143
|
+
module.exports = function (val, options) {
|
2144
|
+
options = options || {}
|
2145
|
+
var type = typeof val
|
2146
|
+
if (type === 'string' && val.length > 0) {
|
2147
|
+
return parse(val)
|
2148
|
+
} else if (type === 'number' && isNaN(val) === false) {
|
2149
|
+
return options.long ?
|
2150
|
+
fmtLong(val) :
|
2151
|
+
fmtShort(val)
|
2152
|
+
}
|
2153
|
+
throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))
|
2154
|
+
}
|
2155
|
+
|
2156
|
+
/**
|
2157
|
+
* Parse the given `str` and return milliseconds.
|
2158
|
+
*
|
2159
|
+
* @param {String} str
|
2160
|
+
* @return {Number}
|
2161
|
+
* @api private
|
2162
|
+
*/
|
2163
|
+
|
2164
|
+
function parse(str) {
|
2165
|
+
str = String(str)
|
2166
|
+
if (str.length > 10000) {
|
2167
|
+
return
|
2168
|
+
}
|
2169
|
+
var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)
|
2170
|
+
if (!match) {
|
2171
|
+
return
|
2172
|
+
}
|
2173
|
+
var n = parseFloat(match[1])
|
2174
|
+
var type = (match[2] || 'ms').toLowerCase()
|
2175
|
+
switch (type) {
|
2176
|
+
case 'years':
|
2177
|
+
case 'year':
|
2178
|
+
case 'yrs':
|
2179
|
+
case 'yr':
|
2180
|
+
case 'y':
|
2181
|
+
return n * y
|
2182
|
+
case 'days':
|
2183
|
+
case 'day':
|
2184
|
+
case 'd':
|
2185
|
+
return n * d
|
2186
|
+
case 'hours':
|
2187
|
+
case 'hour':
|
2188
|
+
case 'hrs':
|
2189
|
+
case 'hr':
|
2190
|
+
case 'h':
|
2191
|
+
return n * h
|
2192
|
+
case 'minutes':
|
2193
|
+
case 'minute':
|
2194
|
+
case 'mins':
|
2195
|
+
case 'min':
|
2196
|
+
case 'm':
|
2197
|
+
return n * m
|
2198
|
+
case 'seconds':
|
2199
|
+
case 'second':
|
2200
|
+
case 'secs':
|
2201
|
+
case 'sec':
|
2202
|
+
case 's':
|
2203
|
+
return n * s
|
2204
|
+
case 'milliseconds':
|
2205
|
+
case 'millisecond':
|
2206
|
+
case 'msecs':
|
2207
|
+
case 'msec':
|
2208
|
+
case 'ms':
|
2209
|
+
return n
|
2210
|
+
default:
|
2211
|
+
return undefined
|
2212
|
+
}
|
2213
|
+
}
|
2214
|
+
|
2215
|
+
/**
|
2216
|
+
* Short format for `ms`.
|
2217
|
+
*
|
2218
|
+
* @param {Number} ms
|
2219
|
+
* @return {String}
|
2220
|
+
* @api private
|
2221
|
+
*/
|
2222
|
+
|
2223
|
+
function fmtShort(ms) {
|
2224
|
+
if (ms >= d) {
|
2225
|
+
return Math.round(ms / d) + 'd'
|
2226
|
+
}
|
2227
|
+
if (ms >= h) {
|
2228
|
+
return Math.round(ms / h) + 'h'
|
2229
|
+
}
|
2230
|
+
if (ms >= m) {
|
2231
|
+
return Math.round(ms / m) + 'm'
|
2232
|
+
}
|
2233
|
+
if (ms >= s) {
|
2234
|
+
return Math.round(ms / s) + 's'
|
2235
|
+
}
|
2236
|
+
return ms + 'ms'
|
2237
|
+
}
|
2238
|
+
|
2239
|
+
/**
|
2240
|
+
* Long format for `ms`.
|
2241
|
+
*
|
2242
|
+
* @param {Number} ms
|
2243
|
+
* @return {String}
|
2244
|
+
* @api private
|
2245
|
+
*/
|
2246
|
+
|
2247
|
+
function fmtLong(ms) {
|
2248
|
+
return plural(ms, d, 'day') ||
|
2249
|
+
plural(ms, h, 'hour') ||
|
2250
|
+
plural(ms, m, 'minute') ||
|
2251
|
+
plural(ms, s, 'second') ||
|
2252
|
+
ms + ' ms'
|
2253
|
+
}
|
2254
|
+
|
2255
|
+
/**
|
2256
|
+
* Pluralization helper.
|
2257
|
+
*/
|
2258
|
+
|
2259
|
+
function plural(ms, n, name) {
|
2260
|
+
if (ms < n) {
|
2261
|
+
return
|
2262
|
+
}
|
2263
|
+
if (ms < n * 1.5) {
|
2264
|
+
return Math.floor(ms / n) + ' ' + name
|
2265
|
+
}
|
2266
|
+
return Math.ceil(ms / n) + ' ' + name + 's'
|
2267
|
+
}
|
2268
|
+
|
2269
|
+
},{}],10:[function(require,module,exports){
|
2270
|
+
'use strict';
|
2271
|
+
|
2272
|
+
// modified from https://github.com/es-shims/es5-shim
|
2273
|
+
var has = Object.prototype.hasOwnProperty;
|
2274
|
+
var toStr = Object.prototype.toString;
|
2275
|
+
var slice = Array.prototype.slice;
|
2276
|
+
var isArgs = require(11);
|
2277
|
+
var isEnumerable = Object.prototype.propertyIsEnumerable;
|
2278
|
+
var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
|
2279
|
+
var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
|
2280
|
+
var dontEnums = [
|
2281
|
+
'toString',
|
2282
|
+
'toLocaleString',
|
2283
|
+
'valueOf',
|
2284
|
+
'hasOwnProperty',
|
2285
|
+
'isPrototypeOf',
|
2286
|
+
'propertyIsEnumerable',
|
2287
|
+
'constructor'
|
2288
|
+
];
|
2289
|
+
var equalsConstructorPrototype = function (o) {
|
2290
|
+
var ctor = o.constructor;
|
2291
|
+
return ctor && ctor.prototype === o;
|
2292
|
+
};
|
2293
|
+
var excludedKeys = {
|
2294
|
+
$console: true,
|
2295
|
+
$external: true,
|
2296
|
+
$frame: true,
|
2297
|
+
$frameElement: true,
|
2298
|
+
$frames: true,
|
2299
|
+
$innerHeight: true,
|
2300
|
+
$innerWidth: true,
|
2301
|
+
$outerHeight: true,
|
2302
|
+
$outerWidth: true,
|
2303
|
+
$pageXOffset: true,
|
2304
|
+
$pageYOffset: true,
|
2305
|
+
$parent: true,
|
2306
|
+
$scrollLeft: true,
|
2307
|
+
$scrollTop: true,
|
2308
|
+
$scrollX: true,
|
2309
|
+
$scrollY: true,
|
2310
|
+
$self: true,
|
2311
|
+
$webkitIndexedDB: true,
|
2312
|
+
$webkitStorageInfo: true,
|
2313
|
+
$window: true
|
2314
|
+
};
|
2315
|
+
var hasAutomationEqualityBug = (function () {
|
2316
|
+
/* global window */
|
2317
|
+
if (typeof window === 'undefined') { return false; }
|
2318
|
+
for (var k in window) {
|
2319
|
+
try {
|
2320
|
+
if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
|
2321
|
+
try {
|
2322
|
+
equalsConstructorPrototype(window[k]);
|
2323
|
+
} catch (e) {
|
2324
|
+
return true;
|
2325
|
+
}
|
2326
|
+
}
|
2327
|
+
} catch (e) {
|
2328
|
+
return true;
|
2329
|
+
}
|
2330
|
+
}
|
2331
|
+
return false;
|
2332
|
+
}());
|
2333
|
+
var equalsConstructorPrototypeIfNotBuggy = function (o) {
|
2334
|
+
/* global window */
|
2335
|
+
if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
|
2336
|
+
return equalsConstructorPrototype(o);
|
2337
|
+
}
|
2338
|
+
try {
|
2339
|
+
return equalsConstructorPrototype(o);
|
2340
|
+
} catch (e) {
|
2341
|
+
return false;
|
2342
|
+
}
|
2343
|
+
};
|
2344
|
+
|
2345
|
+
var keysShim = function keys(object) {
|
2346
|
+
var isObject = object !== null && typeof object === 'object';
|
2347
|
+
var isFunction = toStr.call(object) === '[object Function]';
|
2348
|
+
var isArguments = isArgs(object);
|
2349
|
+
var isString = isObject && toStr.call(object) === '[object String]';
|
2350
|
+
var theKeys = [];
|
2351
|
+
|
2352
|
+
if (!isObject && !isFunction && !isArguments) {
|
2353
|
+
throw new TypeError('Object.keys called on a non-object');
|
2354
|
+
}
|
2355
|
+
|
2356
|
+
var skipProto = hasProtoEnumBug && isFunction;
|
2357
|
+
if (isString && object.length > 0 && !has.call(object, 0)) {
|
2358
|
+
for (var i = 0; i < object.length; ++i) {
|
2359
|
+
theKeys.push(String(i));
|
2360
|
+
}
|
2361
|
+
}
|
2362
|
+
|
2363
|
+
if (isArguments && object.length > 0) {
|
2364
|
+
for (var j = 0; j < object.length; ++j) {
|
2365
|
+
theKeys.push(String(j));
|
2366
|
+
}
|
2367
|
+
} else {
|
2368
|
+
for (var name in object) {
|
2369
|
+
if (!(skipProto && name === 'prototype') && has.call(object, name)) {
|
2370
|
+
theKeys.push(String(name));
|
2371
|
+
}
|
2372
|
+
}
|
2373
|
+
}
|
2374
|
+
|
2375
|
+
if (hasDontEnumBug) {
|
2376
|
+
var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
|
2377
|
+
|
2378
|
+
for (var k = 0; k < dontEnums.length; ++k) {
|
2379
|
+
if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
|
2380
|
+
theKeys.push(dontEnums[k]);
|
2381
|
+
}
|
2382
|
+
}
|
2383
|
+
}
|
2384
|
+
return theKeys;
|
2385
|
+
};
|
2386
|
+
|
2387
|
+
keysShim.shim = function shimObjectKeys() {
|
2388
|
+
if (Object.keys) {
|
2389
|
+
var keysWorksWithArguments = (function () {
|
2390
|
+
// Safari 5.0 bug
|
2391
|
+
return (Object.keys(arguments) || '').length === 2;
|
2392
|
+
}(1, 2));
|
2393
|
+
if (!keysWorksWithArguments) {
|
2394
|
+
var originalKeys = Object.keys;
|
2395
|
+
Object.keys = function keys(object) {
|
2396
|
+
if (isArgs(object)) {
|
2397
|
+
return originalKeys(slice.call(object));
|
2398
|
+
} else {
|
2399
|
+
return originalKeys(object);
|
2400
|
+
}
|
2401
|
+
};
|
2402
|
+
}
|
2403
|
+
} else {
|
2404
|
+
Object.keys = keysShim;
|
2405
|
+
}
|
2406
|
+
return Object.keys || keysShim;
|
2407
|
+
};
|
2408
|
+
|
2409
|
+
module.exports = keysShim;
|
2410
|
+
|
2411
|
+
},{"11":11}],11:[function(require,module,exports){
|
2412
|
+
'use strict';
|
2413
|
+
|
2414
|
+
var toStr = Object.prototype.toString;
|
2415
|
+
|
2416
|
+
module.exports = function isArguments(value) {
|
2417
|
+
var str = toStr.call(value);
|
2418
|
+
var isArgs = str === '[object Arguments]';
|
2419
|
+
if (!isArgs) {
|
2420
|
+
isArgs = str !== '[object Array]' &&
|
2421
|
+
value !== null &&
|
2422
|
+
typeof value === 'object' &&
|
2423
|
+
typeof value.length === 'number' &&
|
2424
|
+
value.length >= 0 &&
|
2425
|
+
toStr.call(value.callee) === '[object Function]';
|
2426
|
+
}
|
2427
|
+
return isArgs;
|
2428
|
+
};
|
2429
|
+
|
2430
|
+
},{}],12:[function(require,module,exports){
|
2431
|
+
// shim for using process in browser
|
2432
|
+
var process = module.exports = {};
|
2433
|
+
|
2434
|
+
// cached from whatever global is present so that test runners that stub it
|
2435
|
+
// don't break things. But we need to wrap it in a try catch in case it is
|
2436
|
+
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
2437
|
+
// function because try/catches deoptimize in certain engines.
|
2438
|
+
|
2439
|
+
var cachedSetTimeout;
|
2440
|
+
var cachedClearTimeout;
|
2441
|
+
|
2442
|
+
function defaultSetTimout() {
|
2443
|
+
throw new Error('setTimeout has not been defined');
|
2444
|
+
}
|
2445
|
+
function defaultClearTimeout () {
|
2446
|
+
throw new Error('clearTimeout has not been defined');
|
2447
|
+
}
|
2448
|
+
(function () {
|
2449
|
+
try {
|
2450
|
+
if (typeof setTimeout === 'function') {
|
2451
|
+
cachedSetTimeout = setTimeout;
|
2452
|
+
} else {
|
2453
|
+
cachedSetTimeout = defaultSetTimout;
|
2454
|
+
}
|
2455
|
+
} catch (e) {
|
2456
|
+
cachedSetTimeout = defaultSetTimout;
|
2457
|
+
}
|
2458
|
+
try {
|
2459
|
+
if (typeof clearTimeout === 'function') {
|
2460
|
+
cachedClearTimeout = clearTimeout;
|
2461
|
+
} else {
|
2462
|
+
cachedClearTimeout = defaultClearTimeout;
|
2463
|
+
}
|
2464
|
+
} catch (e) {
|
2465
|
+
cachedClearTimeout = defaultClearTimeout;
|
2466
|
+
}
|
2467
|
+
} ())
|
2468
|
+
function runTimeout(fun) {
|
2469
|
+
if (cachedSetTimeout === setTimeout) {
|
2470
|
+
//normal enviroments in sane situations
|
2471
|
+
return setTimeout(fun, 0);
|
2472
|
+
}
|
2473
|
+
// if setTimeout wasn't available but was latter defined
|
2474
|
+
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
2475
|
+
cachedSetTimeout = setTimeout;
|
2476
|
+
return setTimeout(fun, 0);
|
2477
|
+
}
|
2478
|
+
try {
|
2479
|
+
// when when somebody has screwed with setTimeout but no I.E. maddness
|
2480
|
+
return cachedSetTimeout(fun, 0);
|
2481
|
+
} catch(e){
|
2482
|
+
try {
|
2483
|
+
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
2484
|
+
return cachedSetTimeout.call(null, fun, 0);
|
2485
|
+
} catch(e){
|
2486
|
+
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
|
2487
|
+
return cachedSetTimeout.call(this, fun, 0);
|
2488
|
+
}
|
2489
|
+
}
|
2490
|
+
|
2491
|
+
|
2492
|
+
}
|
2493
|
+
function runClearTimeout(marker) {
|
2494
|
+
if (cachedClearTimeout === clearTimeout) {
|
2495
|
+
//normal enviroments in sane situations
|
2496
|
+
return clearTimeout(marker);
|
2497
|
+
}
|
2498
|
+
// if clearTimeout wasn't available but was latter defined
|
2499
|
+
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
2500
|
+
cachedClearTimeout = clearTimeout;
|
2501
|
+
return clearTimeout(marker);
|
2502
|
+
}
|
2503
|
+
try {
|
2504
|
+
// when when somebody has screwed with setTimeout but no I.E. maddness
|
2505
|
+
return cachedClearTimeout(marker);
|
2506
|
+
} catch (e){
|
2507
|
+
try {
|
2508
|
+
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
2509
|
+
return cachedClearTimeout.call(null, marker);
|
2510
|
+
} catch (e){
|
2511
|
+
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
|
2512
|
+
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
2513
|
+
return cachedClearTimeout.call(this, marker);
|
2514
|
+
}
|
2515
|
+
}
|
2516
|
+
|
2517
|
+
|
2518
|
+
|
2519
|
+
}
|
2520
|
+
var queue = [];
|
2521
|
+
var draining = false;
|
2522
|
+
var currentQueue;
|
2523
|
+
var queueIndex = -1;
|
2524
|
+
|
2525
|
+
function cleanUpNextTick() {
|
2526
|
+
if (!draining || !currentQueue) {
|
2527
|
+
return;
|
2528
|
+
}
|
2529
|
+
draining = false;
|
2530
|
+
if (currentQueue.length) {
|
2531
|
+
queue = currentQueue.concat(queue);
|
2532
|
+
} else {
|
2533
|
+
queueIndex = -1;
|
2534
|
+
}
|
2535
|
+
if (queue.length) {
|
2536
|
+
drainQueue();
|
2537
|
+
}
|
2538
|
+
}
|
2539
|
+
|
2540
|
+
function drainQueue() {
|
2541
|
+
if (draining) {
|
2542
|
+
return;
|
2098
2543
|
}
|
2099
|
-
var
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2544
|
+
var timeout = runTimeout(cleanUpNextTick);
|
2545
|
+
draining = true;
|
2546
|
+
|
2547
|
+
var len = queue.length;
|
2548
|
+
while(len) {
|
2549
|
+
currentQueue = queue;
|
2550
|
+
queue = [];
|
2551
|
+
while (++queueIndex < len) {
|
2552
|
+
if (currentQueue) {
|
2553
|
+
currentQueue[queueIndex].run();
|
2108
2554
|
}
|
2109
2555
|
}
|
2556
|
+
queueIndex = -1;
|
2557
|
+
len = queue.length;
|
2110
2558
|
}
|
2111
|
-
|
2559
|
+
currentQueue = null;
|
2560
|
+
draining = false;
|
2561
|
+
runClearTimeout(timeout);
|
2562
|
+
}
|
2112
2563
|
|
2564
|
+
process.nextTick = function (fun) {
|
2565
|
+
var args = new Array(arguments.length - 1);
|
2566
|
+
if (arguments.length > 1) {
|
2567
|
+
for (var i = 1; i < arguments.length; i++) {
|
2568
|
+
args[i - 1] = arguments[i];
|
2569
|
+
}
|
2570
|
+
}
|
2571
|
+
queue.push(new Item(fun, args));
|
2572
|
+
if (queue.length === 1 && !draining) {
|
2573
|
+
runTimeout(drainQueue);
|
2574
|
+
}
|
2575
|
+
};
|
2113
2576
|
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2117
|
-
|
2118
|
-
} else if (typeof global !== "undefined") {
|
2119
|
-
module.exports = global;
|
2120
|
-
} else if (typeof self !== "undefined"){
|
2121
|
-
module.exports = self;
|
2122
|
-
} else {
|
2123
|
-
module.exports = {};
|
2577
|
+
// v8 likes predictible objects
|
2578
|
+
function Item(fun, array) {
|
2579
|
+
this.fun = fun;
|
2580
|
+
this.array = array;
|
2124
2581
|
}
|
2582
|
+
Item.prototype.run = function () {
|
2583
|
+
this.fun.apply(null, this.array);
|
2584
|
+
};
|
2585
|
+
process.title = 'browser';
|
2586
|
+
process.browser = true;
|
2587
|
+
process.env = {};
|
2588
|
+
process.argv = [];
|
2589
|
+
process.version = ''; // empty string to avoid regexp issues
|
2590
|
+
process.versions = {};
|
2125
2591
|
|
2126
|
-
|
2127
|
-
},{}],9:[function(require,module,exports){
|
2128
|
-
if (typeof Object.create === 'function') {
|
2129
|
-
// implementation from standard node.js 'util' module
|
2130
|
-
module.exports = function inherits(ctor, superCtor) {
|
2131
|
-
ctor.super_ = superCtor
|
2132
|
-
ctor.prototype = Object.create(superCtor.prototype, {
|
2133
|
-
constructor: {
|
2134
|
-
value: ctor,
|
2135
|
-
enumerable: false,
|
2136
|
-
writable: true,
|
2137
|
-
configurable: true
|
2138
|
-
}
|
2139
|
-
});
|
2140
|
-
};
|
2141
|
-
} else {
|
2142
|
-
// old school shim for old browsers
|
2143
|
-
module.exports = function inherits(ctor, superCtor) {
|
2144
|
-
ctor.super_ = superCtor
|
2145
|
-
var TempCtor = function () {}
|
2146
|
-
TempCtor.prototype = superCtor.prototype
|
2147
|
-
ctor.prototype = new TempCtor()
|
2148
|
-
ctor.prototype.constructor = ctor
|
2149
|
-
}
|
2150
|
-
}
|
2592
|
+
function noop() {}
|
2151
2593
|
|
2152
|
-
|
2153
|
-
|
2594
|
+
process.on = noop;
|
2595
|
+
process.addListener = noop;
|
2596
|
+
process.once = noop;
|
2597
|
+
process.off = noop;
|
2598
|
+
process.removeListener = noop;
|
2599
|
+
process.removeAllListeners = noop;
|
2600
|
+
process.emit = noop;
|
2154
2601
|
|
2155
|
-
|
2156
|
-
|
2602
|
+
process.binding = function (name) {
|
2603
|
+
throw new Error('process.binding is not supported');
|
2604
|
+
};
|
2605
|
+
|
2606
|
+
process.cwd = function () { return '/' };
|
2607
|
+
process.chdir = function (dir) {
|
2608
|
+
throw new Error('process.chdir is not supported');
|
2157
2609
|
};
|
2610
|
+
process.umask = function() { return 0; };
|
2158
2611
|
|
2159
|
-
},{}],
|
2612
|
+
},{}],13:[function(require,module,exports){
|
2160
2613
|
// Copyright Joyent, Inc. and other Node contributors.
|
2161
2614
|
//
|
2162
2615
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
@@ -2243,15 +2696,15 @@ var objectKeys = Object.keys || function (obj) {
|
|
2243
2696
|
return res;
|
2244
2697
|
};
|
2245
2698
|
|
2246
|
-
},{}],
|
2699
|
+
},{}],14:[function(require,module,exports){
|
2247
2700
|
module.exports = AlgoliaSearch;
|
2248
2701
|
|
2249
|
-
var Index = require(
|
2250
|
-
var deprecate = require(
|
2251
|
-
var deprecatedMessage = require(
|
2252
|
-
var AlgoliaSearchCore = require(
|
2253
|
-
var inherits = require(
|
2254
|
-
var errors = require(
|
2702
|
+
var Index = require(16);
|
2703
|
+
var deprecate = require(27);
|
2704
|
+
var deprecatedMessage = require(28);
|
2705
|
+
var AlgoliaSearchCore = require(15);
|
2706
|
+
var inherits = require(7);
|
2707
|
+
var errors = require(29);
|
2255
2708
|
|
2256
2709
|
function AlgoliaSearch() {
|
2257
2710
|
AlgoliaSearchCore.apply(this, arguments);
|
@@ -2332,7 +2785,7 @@ AlgoliaSearch.prototype.copyIndex = function(srcIndexName, dstIndexName, callbac
|
|
2332
2785
|
* content: the server answer that contains the task ID
|
2333
2786
|
*/
|
2334
2787
|
AlgoliaSearch.prototype.getLogs = function(offset, length, callback) {
|
2335
|
-
var clone = require(
|
2788
|
+
var clone = require(26);
|
2336
2789
|
var params = {};
|
2337
2790
|
if (typeof offset === 'object') {
|
2338
2791
|
// getLogs(params)
|
@@ -2484,7 +2937,7 @@ AlgoliaSearch.prototype.deleteUserKey = function(key, callback) {
|
|
2484
2937
|
* @see {@link https://www.algolia.com/doc/rest_api#AddKey|Algolia REST API Documentation}
|
2485
2938
|
*/
|
2486
2939
|
AlgoliaSearch.prototype.addUserKey = function(acls, params, callback) {
|
2487
|
-
var isArray = require(
|
2940
|
+
var isArray = require(8);
|
2488
2941
|
var usage = 'Usage: client.addUserKey(arrayOfAcls[, params, callback])';
|
2489
2942
|
|
2490
2943
|
if (!isArray(acls)) {
|
@@ -2569,7 +3022,7 @@ AlgoliaSearch.prototype.addUserKeyWithValidity = deprecate(function(acls, params
|
|
2569
3022
|
* @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}
|
2570
3023
|
*/
|
2571
3024
|
AlgoliaSearch.prototype.updateUserKey = function(key, acls, params, callback) {
|
2572
|
-
var isArray = require(
|
3025
|
+
var isArray = require(8);
|
2573
3026
|
var usage = 'Usage: client.updateUserKey(key, arrayOfAcls[, params, callback])';
|
2574
3027
|
|
2575
3028
|
if (!isArray(acls)) {
|
@@ -2670,7 +3123,7 @@ AlgoliaSearch.prototype.sendQueriesBatch = deprecate(function sendQueriesBatchDe
|
|
2670
3123
|
* }], cb)
|
2671
3124
|
*/
|
2672
3125
|
AlgoliaSearch.prototype.batch = function(operations, callback) {
|
2673
|
-
var isArray = require(
|
3126
|
+
var isArray = require(8);
|
2674
3127
|
var usage = 'Usage: client.batch(operations[, callback])';
|
2675
3128
|
|
2676
3129
|
if (!isArray(operations)) {
|
@@ -2703,15 +3156,22 @@ function notImplemented() {
|
|
2703
3156
|
throw new errors.AlgoliaSearchError(message);
|
2704
3157
|
}
|
2705
3158
|
|
2706
|
-
},{"
|
3159
|
+
},{"15":15,"16":16,"26":26,"27":27,"28":28,"29":29,"7":7,"8":8}],15:[function(require,module,exports){
|
3160
|
+
(function (process){
|
2707
3161
|
module.exports = AlgoliaSearchCore;
|
2708
3162
|
|
2709
|
-
var errors = require(
|
2710
|
-
var exitPromise = require(
|
2711
|
-
var IndexCore = require(
|
3163
|
+
var errors = require(29);
|
3164
|
+
var exitPromise = require(30);
|
3165
|
+
var IndexCore = require(18);
|
3166
|
+
var store = require(35);
|
2712
3167
|
|
2713
|
-
// We will always put the API KEY in the JSON body in case of too long API KEY
|
3168
|
+
// We will always put the API KEY in the JSON body in case of too long API KEY,
|
3169
|
+
// to avoid query string being too long and failing in various conditions (our server limit, browser limit,
|
3170
|
+
// proxies limit)
|
2714
3171
|
var MAX_API_KEY_LENGTH = 500;
|
3172
|
+
var RESET_APP_DATA_TIMER =
|
3173
|
+
process.env.RESET_APP_DATA_TIMER && parseInt(process.env.RESET_APP_DATA_TIMER, 10) ||
|
3174
|
+
60 * 2 * 1000; // after 2 minutes reset to first host
|
2715
3175
|
|
2716
3176
|
/*
|
2717
3177
|
* Algolia Search library initialization
|
@@ -2739,11 +3199,11 @@ var MAX_API_KEY_LENGTH = 500;
|
|
2739
3199
|
* If you provide them, you will less benefit from our HA implementation
|
2740
3200
|
*/
|
2741
3201
|
function AlgoliaSearchCore(applicationID, apiKey, opts) {
|
2742
|
-
var debug = require(
|
3202
|
+
var debug = require(1)('algoliasearch');
|
2743
3203
|
|
2744
|
-
var clone = require(
|
2745
|
-
var isArray = require(
|
2746
|
-
var map = require(
|
3204
|
+
var clone = require(26);
|
3205
|
+
var isArray = require(8);
|
3206
|
+
var map = require(31);
|
2747
3207
|
|
2748
3208
|
var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)';
|
2749
3209
|
|
@@ -2758,25 +3218,24 @@ function AlgoliaSearchCore(applicationID, apiKey, opts) {
|
|
2758
3218
|
this.applicationID = applicationID;
|
2759
3219
|
this.apiKey = apiKey;
|
2760
3220
|
|
2761
|
-
var defaultHosts = shuffle([
|
2762
|
-
this.applicationID + '-1.algolianet.com',
|
2763
|
-
this.applicationID + '-2.algolianet.com',
|
2764
|
-
this.applicationID + '-3.algolianet.com'
|
2765
|
-
]);
|
2766
3221
|
this.hosts = {
|
2767
3222
|
read: [],
|
2768
3223
|
write: []
|
2769
3224
|
};
|
2770
3225
|
|
2771
|
-
this.hostIndex = {
|
2772
|
-
read: 0,
|
2773
|
-
write: 0
|
2774
|
-
};
|
2775
|
-
|
2776
3226
|
opts = opts || {};
|
2777
3227
|
|
2778
3228
|
var protocol = opts.protocol || 'https:';
|
2779
|
-
|
3229
|
+
this._timeouts = opts.timeouts || {
|
3230
|
+
connect: 1 * 1000, // 500ms connect is GPRS latency
|
3231
|
+
read: 2 * 1000,
|
3232
|
+
write: 30 * 1000
|
3233
|
+
};
|
3234
|
+
|
3235
|
+
// backward compat, if opts.timeout is passed, we use it to configure all timeouts like before
|
3236
|
+
if (opts.timeout) {
|
3237
|
+
this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout;
|
3238
|
+
}
|
2780
3239
|
|
2781
3240
|
// while we advocate for colon-at-the-end values: 'http:' for `opts.protocol`
|
2782
3241
|
// we also accept `http` and `https`. It's a common error.
|
@@ -2788,11 +3247,19 @@ function AlgoliaSearchCore(applicationID, apiKey, opts) {
|
|
2788
3247
|
throw new errors.AlgoliaSearchError('protocol must be `http:` or `https:` (was `' + opts.protocol + '`)');
|
2789
3248
|
}
|
2790
3249
|
|
2791
|
-
|
3250
|
+
this._checkAppIdData();
|
3251
|
+
|
2792
3252
|
if (!opts.hosts) {
|
3253
|
+
var defaultHosts = map(this._shuffleResult, function(hostNumber) {
|
3254
|
+
return applicationID + '-' + hostNumber + '.algolianet.com';
|
3255
|
+
});
|
3256
|
+
|
3257
|
+
// no hosts given, compute defaults
|
2793
3258
|
this.hosts.read = [this.applicationID + '-dsn.algolia.net'].concat(defaultHosts);
|
2794
3259
|
this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts);
|
2795
3260
|
} else if (isArray(opts.hosts)) {
|
3261
|
+
// when passing custom hosts, we need to have a different host index if the number
|
3262
|
+
// of write/read hosts are different.
|
2796
3263
|
this.hosts.read = clone(opts.hosts);
|
2797
3264
|
this.hosts.write = clone(opts.hosts);
|
2798
3265
|
} else {
|
@@ -2803,7 +3270,6 @@ function AlgoliaSearchCore(applicationID, apiKey, opts) {
|
|
2803
3270
|
// add protocol and lowercase hosts
|
2804
3271
|
this.hosts.read = map(this.hosts.read, prepareHost(protocol));
|
2805
3272
|
this.hosts.write = map(this.hosts.write, prepareHost(protocol));
|
2806
|
-
this.requestTimeout = timeout;
|
2807
3273
|
|
2808
3274
|
this.extraHeaders = [];
|
2809
3275
|
|
@@ -2848,14 +3314,18 @@ AlgoliaSearchCore.prototype.setExtraHeader = function(name, value) {
|
|
2848
3314
|
* @param algoliaAgent the agent to add
|
2849
3315
|
*/
|
2850
3316
|
AlgoliaSearchCore.prototype.addAlgoliaAgent = function(algoliaAgent) {
|
2851
|
-
this._ua
|
3317
|
+
if (this._ua.indexOf(';' + algoliaAgent) === -1) {
|
3318
|
+
this._ua += ';' + algoliaAgent;
|
3319
|
+
}
|
2852
3320
|
};
|
2853
3321
|
|
2854
3322
|
/*
|
2855
3323
|
* Wrapper that try all hosts to maximize the quality of service
|
2856
3324
|
*/
|
2857
3325
|
AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
2858
|
-
|
3326
|
+
this._checkAppIdData();
|
3327
|
+
|
3328
|
+
var requestDebug = require(1)('algoliasearch:' + initialOpts.url);
|
2859
3329
|
|
2860
3330
|
var body;
|
2861
3331
|
var cache = initialOpts.cache;
|
@@ -2865,7 +3335,12 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
2865
3335
|
var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback;
|
2866
3336
|
var headers;
|
2867
3337
|
|
2868
|
-
if (
|
3338
|
+
if (
|
3339
|
+
this.apiKey.length > MAX_API_KEY_LENGTH &&
|
3340
|
+
initialOpts.body !== undefined &&
|
3341
|
+
(initialOpts.body.params !== undefined || // index.search()
|
3342
|
+
initialOpts.body.requests !== undefined) // client.search()
|
3343
|
+
) {
|
2869
3344
|
initialOpts.body.apiKey = this.apiKey;
|
2870
3345
|
headers = this._computeRequestHeaders(false);
|
2871
3346
|
} else {
|
@@ -2880,6 +3355,8 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
2880
3355
|
var debugData = [];
|
2881
3356
|
|
2882
3357
|
function doRequest(requester, reqOpts) {
|
3358
|
+
client._checkAppIdData();
|
3359
|
+
|
2883
3360
|
var startTime = new Date();
|
2884
3361
|
var cacheID;
|
2885
3362
|
|
@@ -2926,13 +3403,13 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
2926
3403
|
// re-compute headers, they could be omitting the API KEY
|
2927
3404
|
headers = client._computeRequestHeaders();
|
2928
3405
|
|
2929
|
-
reqOpts.
|
2930
|
-
client.
|
3406
|
+
reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
|
3407
|
+
client._setHostIndexByType(0, initialOpts.hostType);
|
2931
3408
|
usingFallback = true; // the current request is now using fallback
|
2932
3409
|
return doRequest(client._request.fallback, reqOpts);
|
2933
3410
|
}
|
2934
3411
|
|
2935
|
-
var currentHost = client.
|
3412
|
+
var currentHost = client._getHostByType(initialOpts.hostType);
|
2936
3413
|
|
2937
3414
|
var url = currentHost + reqOpts.url;
|
2938
3415
|
var options = {
|
@@ -2940,12 +3417,12 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
2940
3417
|
jsonBody: reqOpts.jsonBody,
|
2941
3418
|
method: reqOpts.method,
|
2942
3419
|
headers: headers,
|
2943
|
-
|
3420
|
+
timeouts: reqOpts.timeouts,
|
2944
3421
|
debug: requestDebug
|
2945
3422
|
};
|
2946
3423
|
|
2947
|
-
requestDebug('method: %s, url: %s, headers: %j,
|
2948
|
-
options.method, url, options.headers, options.
|
3424
|
+
requestDebug('method: %s, url: %s, headers: %j, timeouts: %d',
|
3425
|
+
options.method, url, options.headers, options.timeouts);
|
2949
3426
|
|
2950
3427
|
if (requester === client._request.fallback) {
|
2951
3428
|
requestDebug('using fallback');
|
@@ -2988,7 +3465,7 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
2988
3465
|
content: body || null,
|
2989
3466
|
contentLength: body !== undefined ? body.length : null,
|
2990
3467
|
method: reqOpts.method,
|
2991
|
-
|
3468
|
+
timeouts: reqOpts.timeouts,
|
2992
3469
|
url: reqOpts.url,
|
2993
3470
|
startTime: startTime,
|
2994
3471
|
endTime: endTime,
|
@@ -3041,7 +3518,7 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
3041
3518
|
content: body || null,
|
3042
3519
|
contentLength: body !== undefined ? body.length : null,
|
3043
3520
|
method: reqOpts.method,
|
3044
|
-
|
3521
|
+
timeouts: reqOpts.timeouts,
|
3045
3522
|
url: reqOpts.url,
|
3046
3523
|
startTime: startTime,
|
3047
3524
|
endTime: endTime,
|
@@ -3081,14 +3558,15 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
3081
3558
|
|
3082
3559
|
function retryRequest() {
|
3083
3560
|
requestDebug('retrying request');
|
3084
|
-
client.
|
3561
|
+
client._incrementHostIndex(initialOpts.hostType);
|
3085
3562
|
return doRequest(requester, reqOpts);
|
3086
3563
|
}
|
3087
3564
|
|
3088
3565
|
function retryRequestWithHigherTimeout() {
|
3089
3566
|
requestDebug('retrying request with higher timeout');
|
3090
|
-
client.
|
3091
|
-
|
3567
|
+
client._incrementHostIndex(initialOpts.hostType);
|
3568
|
+
client._incrementTimeoutMultipler();
|
3569
|
+
reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
|
3092
3570
|
return doRequest(requester, reqOpts);
|
3093
3571
|
}
|
3094
3572
|
}
|
@@ -3099,7 +3577,7 @@ AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
|
|
3099
3577
|
method: initialOpts.method,
|
3100
3578
|
body: body,
|
3101
3579
|
jsonBody: initialOpts.body,
|
3102
|
-
|
3580
|
+
timeouts: client._getTimeoutsForRequest(initialOpts.hostType)
|
3103
3581
|
}
|
3104
3582
|
);
|
3105
3583
|
|
@@ -3137,7 +3615,7 @@ AlgoliaSearchCore.prototype._getSearchParams = function(args, params) {
|
|
3137
3615
|
};
|
3138
3616
|
|
3139
3617
|
AlgoliaSearchCore.prototype._computeRequestHeaders = function(withAPIKey) {
|
3140
|
-
var forEach = require(
|
3618
|
+
var forEach = require(5);
|
3141
3619
|
|
3142
3620
|
var requestHeaders = {
|
3143
3621
|
'x-algolia-agent': this._ua,
|
@@ -3179,8 +3657,8 @@ AlgoliaSearchCore.prototype._computeRequestHeaders = function(withAPIKey) {
|
|
3179
3657
|
* @return {Promise|undefined} Returns a promise if no callback given
|
3180
3658
|
*/
|
3181
3659
|
AlgoliaSearchCore.prototype.search = function(queries, opts, callback) {
|
3182
|
-
var isArray = require(
|
3183
|
-
var map = require(
|
3660
|
+
var isArray = require(8);
|
3661
|
+
var map = require(31);
|
3184
3662
|
|
3185
3663
|
var usage = 'Usage: client.search(arrayOfQueries[, callback])';
|
3186
3664
|
|
@@ -3288,15 +3766,115 @@ AlgoliaSearchCore.prototype.clearCache = function() {
|
|
3288
3766
|
|
3289
3767
|
/**
|
3290
3768
|
* Set the number of milliseconds a request can take before automatically being terminated.
|
3291
|
-
*
|
3769
|
+
* @deprecated
|
3292
3770
|
* @param {Number} milliseconds
|
3293
3771
|
*/
|
3294
3772
|
AlgoliaSearchCore.prototype.setRequestTimeout = function(milliseconds) {
|
3295
3773
|
if (milliseconds) {
|
3296
|
-
this.
|
3774
|
+
this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds;
|
3297
3775
|
}
|
3298
3776
|
};
|
3299
3777
|
|
3778
|
+
/**
|
3779
|
+
* Set the three different (connect, read, write) timeouts to be used when requesting
|
3780
|
+
* @param {Object} timeouts
|
3781
|
+
*/
|
3782
|
+
AlgoliaSearchCore.prototype.setTimeouts = function(timeouts) {
|
3783
|
+
this._timeouts = timeouts;
|
3784
|
+
};
|
3785
|
+
|
3786
|
+
/**
|
3787
|
+
* Get the three different (connect, read, write) timeouts to be used when requesting
|
3788
|
+
* @param {Object} timeouts
|
3789
|
+
*/
|
3790
|
+
AlgoliaSearchCore.prototype.getTimeouts = function() {
|
3791
|
+
return this._timeouts;
|
3792
|
+
};
|
3793
|
+
|
3794
|
+
AlgoliaSearchCore.prototype._getAppIdData = function() {
|
3795
|
+
var data = store.get(this.applicationID);
|
3796
|
+
if (data !== null) this._cacheAppIdData(data);
|
3797
|
+
return data;
|
3798
|
+
};
|
3799
|
+
|
3800
|
+
AlgoliaSearchCore.prototype._setAppIdData = function(data) {
|
3801
|
+
data.lastChange = (new Date()).getTime();
|
3802
|
+
this._cacheAppIdData(data);
|
3803
|
+
return store.set(this.applicationID, data);
|
3804
|
+
};
|
3805
|
+
|
3806
|
+
AlgoliaSearchCore.prototype._checkAppIdData = function() {
|
3807
|
+
var data = this._getAppIdData();
|
3808
|
+
var now = (new Date()).getTime();
|
3809
|
+
if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) {
|
3810
|
+
return this._resetInitialAppIdData(data);
|
3811
|
+
}
|
3812
|
+
|
3813
|
+
return data;
|
3814
|
+
};
|
3815
|
+
|
3816
|
+
AlgoliaSearchCore.prototype._resetInitialAppIdData = function(data) {
|
3817
|
+
var newData = data || {};
|
3818
|
+
newData.hostIndexes = {read: 0, write: 0};
|
3819
|
+
newData.timeoutMultiplier = 1;
|
3820
|
+
newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]);
|
3821
|
+
return this._setAppIdData(newData);
|
3822
|
+
};
|
3823
|
+
|
3824
|
+
AlgoliaSearchCore.prototype._cacheAppIdData = function(data) {
|
3825
|
+
this._hostIndexes = data.hostIndexes;
|
3826
|
+
this._timeoutMultiplier = data.timeoutMultiplier;
|
3827
|
+
this._shuffleResult = data.shuffleResult;
|
3828
|
+
};
|
3829
|
+
|
3830
|
+
AlgoliaSearchCore.prototype._partialAppIdDataUpdate = function(newData) {
|
3831
|
+
var foreach = require(5);
|
3832
|
+
var currentData = this._getAppIdData();
|
3833
|
+
foreach(newData, function(value, key) {
|
3834
|
+
currentData[key] = value;
|
3835
|
+
});
|
3836
|
+
|
3837
|
+
return this._setAppIdData(currentData);
|
3838
|
+
};
|
3839
|
+
|
3840
|
+
AlgoliaSearchCore.prototype._getHostByType = function(hostType) {
|
3841
|
+
return this.hosts[hostType][this._getHostIndexByType(hostType)];
|
3842
|
+
};
|
3843
|
+
|
3844
|
+
AlgoliaSearchCore.prototype._getTimeoutMultiplier = function() {
|
3845
|
+
return this._timeoutMultiplier;
|
3846
|
+
};
|
3847
|
+
|
3848
|
+
AlgoliaSearchCore.prototype._getHostIndexByType = function(hostType) {
|
3849
|
+
return this._hostIndexes[hostType];
|
3850
|
+
};
|
3851
|
+
|
3852
|
+
AlgoliaSearchCore.prototype._setHostIndexByType = function(hostIndex, hostType) {
|
3853
|
+
var clone = require(26);
|
3854
|
+
var newHostIndexes = clone(this._hostIndexes);
|
3855
|
+
newHostIndexes[hostType] = hostIndex;
|
3856
|
+
this._partialAppIdDataUpdate({hostIndexes: newHostIndexes});
|
3857
|
+
return hostIndex;
|
3858
|
+
};
|
3859
|
+
|
3860
|
+
AlgoliaSearchCore.prototype._incrementHostIndex = function(hostType) {
|
3861
|
+
return this._setHostIndexByType(
|
3862
|
+
(this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length, hostType
|
3863
|
+
);
|
3864
|
+
};
|
3865
|
+
|
3866
|
+
AlgoliaSearchCore.prototype._incrementTimeoutMultipler = function() {
|
3867
|
+
var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4);
|
3868
|
+
return this._partialAppIdDataUpdate({timeoutMultiplier: timeoutMultiplier});
|
3869
|
+
};
|
3870
|
+
|
3871
|
+
AlgoliaSearchCore.prototype._getTimeoutsForRequest = function(hostType) {
|
3872
|
+
return {
|
3873
|
+
connect: this._timeouts.connect * this._timeoutMultiplier,
|
3874
|
+
complete: this._timeouts[hostType] * this._timeoutMultiplier
|
3875
|
+
};
|
3876
|
+
};
|
3877
|
+
|
3300
3878
|
function prepareHost(protocol) {
|
3301
3879
|
return function prepare(host) {
|
3302
3880
|
return protocol + '//' + host.toLowerCase();
|
@@ -3365,13 +3943,14 @@ function removeCredentials(headers) {
|
|
3365
3943
|
return newHeaders;
|
3366
3944
|
}
|
3367
3945
|
|
3368
|
-
},
|
3369
|
-
|
3370
|
-
var
|
3371
|
-
var
|
3372
|
-
var
|
3373
|
-
var
|
3374
|
-
var
|
3946
|
+
}).call(this,require(12))
|
3947
|
+
},{"1":1,"12":12,"18":18,"26":26,"29":29,"30":30,"31":31,"35":35,"5":5,"8":8}],16:[function(require,module,exports){
|
3948
|
+
var inherits = require(7);
|
3949
|
+
var IndexCore = require(18);
|
3950
|
+
var deprecate = require(27);
|
3951
|
+
var deprecatedMessage = require(28);
|
3952
|
+
var exitPromise = require(30);
|
3953
|
+
var errors = require(29);
|
3375
3954
|
|
3376
3955
|
module.exports = Index;
|
3377
3956
|
|
@@ -3420,7 +3999,7 @@ Index.prototype.addObject = function(content, objectID, callback) {
|
|
3420
3999
|
* content: the server answer that updateAt and taskID
|
3421
4000
|
*/
|
3422
4001
|
Index.prototype.addObjects = function(objects, callback) {
|
3423
|
-
var isArray = require(
|
4002
|
+
var isArray = require(8);
|
3424
4003
|
var usage = 'Usage: index.addObjects(arrayOfObjects[, callback])';
|
3425
4004
|
|
3426
4005
|
if (!isArray(objects)) {
|
@@ -3487,7 +4066,7 @@ Index.prototype.partialUpdateObject = function(partialObject, createIfNotExists,
|
|
3487
4066
|
* content: the server answer that updateAt and taskID
|
3488
4067
|
*/
|
3489
4068
|
Index.prototype.partialUpdateObjects = function(objects, callback) {
|
3490
|
-
var isArray = require(
|
4069
|
+
var isArray = require(8);
|
3491
4070
|
var usage = 'Usage: index.partialUpdateObjects(arrayOfObjects[, callback])';
|
3492
4071
|
|
3493
4072
|
if (!isArray(objects)) {
|
@@ -3543,7 +4122,7 @@ Index.prototype.saveObject = function(object, callback) {
|
|
3543
4122
|
* content: the server answer that updateAt and taskID
|
3544
4123
|
*/
|
3545
4124
|
Index.prototype.saveObjects = function(objects, callback) {
|
3546
|
-
var isArray = require(
|
4125
|
+
var isArray = require(8);
|
3547
4126
|
var usage = 'Usage: index.saveObjects(arrayOfObjects[, callback])';
|
3548
4127
|
|
3549
4128
|
if (!isArray(objects)) {
|
@@ -3608,8 +4187,8 @@ Index.prototype.deleteObject = function(objectID, callback) {
|
|
3608
4187
|
* content: the server answer that contains 3 elements: createAt, taskId and objectID
|
3609
4188
|
*/
|
3610
4189
|
Index.prototype.deleteObjects = function(objectIDs, callback) {
|
3611
|
-
var isArray = require(
|
3612
|
-
var map = require(
|
4190
|
+
var isArray = require(8);
|
4191
|
+
var map = require(31);
|
3613
4192
|
|
3614
4193
|
var usage = 'Usage: index.deleteObjects(arrayOfObjectIDs[, callback])';
|
3615
4194
|
|
@@ -3648,8 +4227,8 @@ Index.prototype.deleteObjects = function(objectIDs, callback) {
|
|
3648
4227
|
* error: null or Error('message')
|
3649
4228
|
*/
|
3650
4229
|
Index.prototype.deleteByQuery = function(query, params, callback) {
|
3651
|
-
var clone = require(
|
3652
|
-
var map = require(
|
4230
|
+
var clone = require(26);
|
4231
|
+
var map = require(31);
|
3653
4232
|
|
3654
4233
|
var indexObj = this;
|
3655
4234
|
var client = indexObj.as;
|
@@ -3759,9 +4338,9 @@ Index.prototype.browseAll = function(query, queryParameters) {
|
|
3759
4338
|
query = undefined;
|
3760
4339
|
}
|
3761
4340
|
|
3762
|
-
var merge = require(
|
4341
|
+
var merge = require(32);
|
3763
4342
|
|
3764
|
-
var IndexBrowser = require(
|
4343
|
+
var IndexBrowser = require(17);
|
3765
4344
|
|
3766
4345
|
var browser = new IndexBrowser();
|
3767
4346
|
var client = this.as;
|
@@ -4221,7 +4800,7 @@ Index.prototype.deleteUserKey = function(key, callback) {
|
|
4221
4800
|
* @see {@link https://www.algolia.com/doc/rest_api#AddIndexKey|Algolia REST API Documentation}
|
4222
4801
|
*/
|
4223
4802
|
Index.prototype.addUserKey = function(acls, params, callback) {
|
4224
|
-
var isArray = require(
|
4803
|
+
var isArray = require(8);
|
4225
4804
|
var usage = 'Usage: index.addUserKey(arrayOfAcls[, params, callback])';
|
4226
4805
|
|
4227
4806
|
if (!isArray(acls)) {
|
@@ -4304,7 +4883,7 @@ Index.prototype.addUserKeyWithValidity = deprecate(function deprecatedAddUserKey
|
|
4304
4883
|
* @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}
|
4305
4884
|
*/
|
4306
4885
|
Index.prototype.updateUserKey = function(key, acls, params, callback) {
|
4307
|
-
var isArray = require(
|
4886
|
+
var isArray = require(8);
|
4308
4887
|
var usage = 'Usage: index.updateUserKey(key, arrayOfAcls[, params, callback])';
|
4309
4888
|
|
4310
4889
|
if (!isArray(acls)) {
|
@@ -4342,15 +4921,15 @@ Index.prototype.updateUserKey = function(key, acls, params, callback) {
|
|
4342
4921
|
});
|
4343
4922
|
};
|
4344
4923
|
|
4345
|
-
},{"
|
4924
|
+
},{"17":17,"18":18,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"7":7,"8":8}],17:[function(require,module,exports){
|
4346
4925
|
'use strict';
|
4347
4926
|
|
4348
4927
|
// This is the object returned by the `index.browseAll()` method
|
4349
4928
|
|
4350
4929
|
module.exports = IndexBrowser;
|
4351
4930
|
|
4352
|
-
var inherits = require(
|
4353
|
-
var EventEmitter = require(
|
4931
|
+
var inherits = require(7);
|
4932
|
+
var EventEmitter = require(4).EventEmitter;
|
4354
4933
|
|
4355
4934
|
function IndexBrowser() {
|
4356
4935
|
}
|
@@ -4383,8 +4962,10 @@ IndexBrowser.prototype._clean = function() {
|
|
4383
4962
|
this.removeAllListeners('result');
|
4384
4963
|
};
|
4385
4964
|
|
4386
|
-
},{"
|
4387
|
-
var buildSearchMethod = require(
|
4965
|
+
},{"4":4,"7":7}],18:[function(require,module,exports){
|
4966
|
+
var buildSearchMethod = require(25);
|
4967
|
+
var deprecate = require(27);
|
4968
|
+
var deprecatedMessage = require(28);
|
4388
4969
|
|
4389
4970
|
module.exports = IndexCore;
|
4390
4971
|
|
@@ -4536,7 +5117,7 @@ IndexCore.prototype.similarSearch = buildSearchMethod('similarQuery');
|
|
4536
5117
|
* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}
|
4537
5118
|
*/
|
4538
5119
|
IndexCore.prototype.browse = function(query, queryParameters, callback) {
|
4539
|
-
var merge = require(
|
5120
|
+
var merge = require(32);
|
4540
5121
|
|
4541
5122
|
var indexObj = this;
|
4542
5123
|
|
@@ -4616,6 +5197,50 @@ IndexCore.prototype.browseFrom = function(cursor, callback) {
|
|
4616
5197
|
});
|
4617
5198
|
};
|
4618
5199
|
|
5200
|
+
/*
|
5201
|
+
* Search for facet values
|
5202
|
+
* https://www.algolia.com/doc/rest-api/search#search-for-facet-values
|
5203
|
+
*
|
5204
|
+
* @param {string} params.facetName Facet name, name of the attribute to search for values in.
|
5205
|
+
* Must be declared as a facet
|
5206
|
+
* @param {string} params.facetQuery Query for the facet search
|
5207
|
+
* @param {string} [params.*] Any search parameter of Algolia,
|
5208
|
+
* see https://www.algolia.com/doc/api-client/javascript/search#search-parameters
|
5209
|
+
* Pagination is not supported. The page and hitsPerPage parameters will be ignored.
|
5210
|
+
* @param callback (optional)
|
5211
|
+
*/
|
5212
|
+
IndexCore.prototype.searchForFacetValues = function(params, callback) {
|
5213
|
+
var clone = require(26);
|
5214
|
+
var omit = require(33);
|
5215
|
+
var usage = 'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])';
|
5216
|
+
|
5217
|
+
if (params.facetName === undefined || params.facetQuery === undefined) {
|
5218
|
+
throw new Error(usage);
|
5219
|
+
}
|
5220
|
+
|
5221
|
+
var facetName = params.facetName;
|
5222
|
+
var filteredParams = omit(clone(params), function(keyName) {
|
5223
|
+
return keyName === 'facetName';
|
5224
|
+
});
|
5225
|
+
var searchParameters = this.as._getSearchParams(filteredParams, '');
|
5226
|
+
|
5227
|
+
return this.as._jsonRequest({
|
5228
|
+
method: 'POST',
|
5229
|
+
url: '/1/indexes/' +
|
5230
|
+
encodeURIComponent(this.indexName) + '/facets/' + encodeURIComponent(facetName) + '/query',
|
5231
|
+
hostType: 'read',
|
5232
|
+
body: {params: searchParameters},
|
5233
|
+
callback: callback
|
5234
|
+
});
|
5235
|
+
};
|
5236
|
+
|
5237
|
+
IndexCore.prototype.searchFacet = deprecate(function(params, callback) {
|
5238
|
+
return this.searchForFacetValues(params, callback);
|
5239
|
+
}, deprecatedMessage(
|
5240
|
+
'index.searchFacet(params[, callback])',
|
5241
|
+
'index.searchForFacetValues(params[, callback])'
|
5242
|
+
));
|
5243
|
+
|
4619
5244
|
IndexCore.prototype._search = function(params, url, callback) {
|
4620
5245
|
return this.as._jsonRequest({
|
4621
5246
|
cache: this.cache,
|
@@ -4674,8 +5299,8 @@ IndexCore.prototype.getObject = function(objectID, attrs, callback) {
|
|
4674
5299
|
* @param objectIDs the array of unique identifier of objects to retrieve
|
4675
5300
|
*/
|
4676
5301
|
IndexCore.prototype.getObjects = function(objectIDs, attributesToRetrieve, callback) {
|
4677
|
-
var isArray = require(
|
4678
|
-
var map = require(
|
5302
|
+
var isArray = require(8);
|
5303
|
+
var map = require(31);
|
4679
5304
|
|
4680
5305
|
var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])';
|
4681
5306
|
|
@@ -4719,7 +5344,7 @@ IndexCore.prototype.indexName = null;
|
|
4719
5344
|
IndexCore.prototype.typeAheadArgs = null;
|
4720
5345
|
IndexCore.prototype.typeAheadValueOption = null;
|
4721
5346
|
|
4722
|
-
},{"
|
5347
|
+
},{"25":25,"26":26,"27":27,"28":28,"31":31,"32":32,"33":33,"8":8}],19:[function(require,module,exports){
|
4723
5348
|
(function (process){
|
4724
5349
|
'use strict';
|
4725
5350
|
|
@@ -4727,25 +5352,25 @@ IndexCore.prototype.typeAheadValueOption = null;
|
|
4727
5352
|
// It's using $.ajax to do requests with a JSONP fallback
|
4728
5353
|
// jQuery promises are returned
|
4729
5354
|
|
4730
|
-
var inherits = require(
|
5355
|
+
var inherits = require(7);
|
4731
5356
|
|
4732
|
-
var AlgoliaSearch = require(
|
4733
|
-
var errors = require(
|
4734
|
-
var inlineHeaders = require(
|
4735
|
-
var jsonpRequest = require(
|
4736
|
-
var places = require(
|
5357
|
+
var AlgoliaSearch = require(14);
|
5358
|
+
var errors = require(29);
|
5359
|
+
var inlineHeaders = require(23);
|
5360
|
+
var jsonpRequest = require(24);
|
5361
|
+
var places = require(34);
|
4737
5362
|
|
4738
5363
|
// expose original algoliasearch fn in window
|
4739
|
-
window.algoliasearch = require(
|
5364
|
+
window.algoliasearch = require(20);
|
4740
5365
|
|
4741
5366
|
if (process.env.NODE_ENV === 'debug') {
|
4742
|
-
require(
|
5367
|
+
require(1).enable('algoliasearch*');
|
4743
5368
|
}
|
4744
5369
|
|
4745
5370
|
function algoliasearch(applicationID, apiKey, opts) {
|
4746
|
-
var cloneDeep = require(
|
5371
|
+
var cloneDeep = require(26);
|
4747
5372
|
|
4748
|
-
var getDocumentProtocol = require(
|
5373
|
+
var getDocumentProtocol = require(22);
|
4749
5374
|
|
4750
5375
|
opts = cloneDeep(opts || {});
|
4751
5376
|
|
@@ -4758,14 +5383,14 @@ function algoliasearch(applicationID, apiKey, opts) {
|
|
4758
5383
|
return new AlgoliaSearchJQuery(applicationID, apiKey, opts);
|
4759
5384
|
}
|
4760
5385
|
|
4761
|
-
algoliasearch.version = require(
|
5386
|
+
algoliasearch.version = require(36);
|
4762
5387
|
algoliasearch.ua = 'Algolia for jQuery ' + algoliasearch.version;
|
4763
5388
|
algoliasearch.initPlaces = places(algoliasearch);
|
4764
5389
|
|
4765
5390
|
// we expose into window no matter how we are used, this will allow
|
4766
5391
|
// us to easily debug any website running algolia
|
4767
5392
|
window.__algolia = {
|
4768
|
-
debug: require(
|
5393
|
+
debug: require(1),
|
4769
5394
|
algoliasearch: algoliasearch
|
4770
5395
|
};
|
4771
5396
|
|
@@ -4805,7 +5430,7 @@ AlgoliaSearchJQuery.prototype._request = function request(url, opts) {
|
|
4805
5430
|
|
4806
5431
|
$.ajax(url, {
|
4807
5432
|
type: opts.method,
|
4808
|
-
timeout: opts.
|
5433
|
+
timeout: opts.timeouts.complete,
|
4809
5434
|
dataType: 'json',
|
4810
5435
|
data: body,
|
4811
5436
|
headers: requestHeaders,
|
@@ -4872,41 +5497,41 @@ AlgoliaSearchJQuery.prototype._promise = {
|
|
4872
5497
|
}
|
4873
5498
|
};
|
4874
5499
|
|
4875
|
-
}).call(this,require(
|
4876
|
-
},{"
|
5500
|
+
}).call(this,require(12))
|
5501
|
+
},{"1":1,"12":12,"14":14,"20":20,"22":22,"23":23,"24":24,"26":26,"29":29,"34":34,"36":36,"7":7}],20:[function(require,module,exports){
|
4877
5502
|
'use strict';
|
4878
5503
|
|
4879
|
-
var AlgoliaSearch = require(
|
4880
|
-
var createAlgoliasearch = require(
|
5504
|
+
var AlgoliaSearch = require(14);
|
5505
|
+
var createAlgoliasearch = require(21);
|
4881
5506
|
|
4882
5507
|
module.exports = createAlgoliasearch(AlgoliaSearch);
|
4883
5508
|
|
4884
|
-
},{"
|
5509
|
+
},{"14":14,"21":21}],21:[function(require,module,exports){
|
4885
5510
|
(function (process){
|
4886
5511
|
'use strict';
|
4887
5512
|
|
4888
|
-
var global = require(
|
4889
|
-
var Promise = global.Promise || require(
|
5513
|
+
var global = require(6);
|
5514
|
+
var Promise = global.Promise || require(3).Promise;
|
4890
5515
|
|
4891
5516
|
// This is the standalone browser build entry point
|
4892
5517
|
// Browser implementation of the Algolia Search JavaScript client,
|
4893
5518
|
// using XMLHttpRequest, XDomainRequest and JSONP as fallback
|
4894
5519
|
module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
4895
|
-
var inherits = require(
|
4896
|
-
var errors = require(
|
4897
|
-
var inlineHeaders = require(
|
4898
|
-
var jsonpRequest = require(
|
4899
|
-
var places = require(
|
5520
|
+
var inherits = require(7);
|
5521
|
+
var errors = require(29);
|
5522
|
+
var inlineHeaders = require(23);
|
5523
|
+
var jsonpRequest = require(24);
|
5524
|
+
var places = require(34);
|
4900
5525
|
uaSuffix = uaSuffix || '';
|
4901
5526
|
|
4902
5527
|
if (process.env.NODE_ENV === 'debug') {
|
4903
|
-
require(
|
5528
|
+
require(1).enable('algoliasearch*');
|
4904
5529
|
}
|
4905
5530
|
|
4906
5531
|
function algoliasearch(applicationID, apiKey, opts) {
|
4907
|
-
var cloneDeep = require(
|
5532
|
+
var cloneDeep = require(26);
|
4908
5533
|
|
4909
|
-
var getDocumentProtocol = require(
|
5534
|
+
var getDocumentProtocol = require(22);
|
4910
5535
|
|
4911
5536
|
opts = cloneDeep(opts || {});
|
4912
5537
|
|
@@ -4919,14 +5544,14 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
4919
5544
|
return new AlgoliaSearchBrowser(applicationID, apiKey, opts);
|
4920
5545
|
}
|
4921
5546
|
|
4922
|
-
algoliasearch.version = require(
|
5547
|
+
algoliasearch.version = require(36);
|
4923
5548
|
algoliasearch.ua = 'Algolia for vanilla JavaScript ' + uaSuffix + algoliasearch.version;
|
4924
5549
|
algoliasearch.initPlaces = places(algoliasearch);
|
4925
5550
|
|
4926
5551
|
// we expose into window no matter how we are used, this will allow
|
4927
5552
|
// us to easily debug any website running algolia
|
4928
5553
|
global.__algolia = {
|
4929
|
-
debug: require(
|
5554
|
+
debug: require(1),
|
4930
5555
|
algoliasearch: algoliasearch
|
4931
5556
|
};
|
4932
5557
|
|
@@ -4937,7 +5562,6 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
4937
5562
|
|
4938
5563
|
if (support.hasXMLHttpRequest) {
|
4939
5564
|
support.cors = 'withCredentials' in new XMLHttpRequest();
|
4940
|
-
support.timeout = 'timeout' in new XMLHttpRequest();
|
4941
5565
|
}
|
4942
5566
|
|
4943
5567
|
function AlgoliaSearchBrowser() {
|
@@ -4960,8 +5584,20 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
4960
5584
|
|
4961
5585
|
var body = opts.body;
|
4962
5586
|
var req = support.cors ? new XMLHttpRequest() : new XDomainRequest();
|
4963
|
-
var
|
5587
|
+
var reqTimeout;
|
4964
5588
|
var timedOut;
|
5589
|
+
var connected = false;
|
5590
|
+
|
5591
|
+
reqTimeout = setTimeout(onTimeout, opts.timeouts.connect);
|
5592
|
+
// we set an empty onprogress listener
|
5593
|
+
// so that XDomainRequest on IE9 is not aborted
|
5594
|
+
// refs:
|
5595
|
+
// - https://github.com/algolia/algoliasearch-client-js/issues/76
|
5596
|
+
// - https://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment
|
5597
|
+
req.onprogress = onProgress;
|
5598
|
+
if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange;
|
5599
|
+
req.onload = onLoad;
|
5600
|
+
req.onerror = onError;
|
4965
5601
|
|
4966
5602
|
// do not rely on default XHR async flag, as some analytics code like hotjar
|
4967
5603
|
// breaks it and set it to false by default
|
@@ -4971,6 +5607,7 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
4971
5607
|
req.open(opts.method, url);
|
4972
5608
|
}
|
4973
5609
|
|
5610
|
+
// headers are meant to be sent after open
|
4974
5611
|
if (support.cors) {
|
4975
5612
|
if (body) {
|
4976
5613
|
if (opts.method === 'POST') {
|
@@ -4983,40 +5620,18 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
4983
5620
|
req.setRequestHeader('accept', 'application/json');
|
4984
5621
|
}
|
4985
5622
|
|
4986
|
-
// we set an empty onprogress listener
|
4987
|
-
// so that XDomainRequest on IE9 is not aborted
|
4988
|
-
// refs:
|
4989
|
-
// - https://github.com/algolia/algoliasearch-client-js/issues/76
|
4990
|
-
// - https://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment
|
4991
|
-
req.onprogress = function noop() {};
|
4992
|
-
|
4993
|
-
req.onload = load;
|
4994
|
-
req.onerror = error;
|
4995
|
-
|
4996
|
-
if (support.timeout) {
|
4997
|
-
// .timeout supported by both XHR and XDR,
|
4998
|
-
// we do receive timeout event, tested
|
4999
|
-
req.timeout = opts.timeout;
|
5000
|
-
|
5001
|
-
req.ontimeout = timeout;
|
5002
|
-
} else {
|
5003
|
-
ontimeout = setTimeout(timeout, opts.timeout);
|
5004
|
-
}
|
5005
|
-
|
5006
5623
|
req.send(body);
|
5007
5624
|
|
5008
5625
|
// event object not received in IE8, at least
|
5009
5626
|
// but we do not use it, still important to note
|
5010
|
-
function
|
5627
|
+
function onLoad(/* event */) {
|
5011
5628
|
// When browser does not supports req.timeout, we can
|
5012
5629
|
// have both a load and timeout event, since handled by a dumb setTimeout
|
5013
5630
|
if (timedOut) {
|
5014
5631
|
return;
|
5015
5632
|
}
|
5016
5633
|
|
5017
|
-
|
5018
|
-
clearTimeout(ontimeout);
|
5019
|
-
}
|
5634
|
+
clearTimeout(reqTimeout);
|
5020
5635
|
|
5021
5636
|
var out;
|
5022
5637
|
|
@@ -5041,14 +5656,12 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
5041
5656
|
}
|
5042
5657
|
}
|
5043
5658
|
|
5044
|
-
function
|
5659
|
+
function onError(event) {
|
5045
5660
|
if (timedOut) {
|
5046
5661
|
return;
|
5047
5662
|
}
|
5048
5663
|
|
5049
|
-
|
5050
|
-
clearTimeout(ontimeout);
|
5051
|
-
}
|
5664
|
+
clearTimeout(reqTimeout);
|
5052
5665
|
|
5053
5666
|
// error event is trigerred both with XDR/XHR on:
|
5054
5667
|
// - DNS error
|
@@ -5060,14 +5673,26 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
5060
5673
|
);
|
5061
5674
|
}
|
5062
5675
|
|
5063
|
-
function
|
5064
|
-
|
5065
|
-
|
5066
|
-
req.abort();
|
5067
|
-
}
|
5676
|
+
function onTimeout() {
|
5677
|
+
timedOut = true;
|
5678
|
+
req.abort();
|
5068
5679
|
|
5069
5680
|
reject(new errors.RequestTimeout());
|
5070
5681
|
}
|
5682
|
+
|
5683
|
+
function onConnect() {
|
5684
|
+
connected = true;
|
5685
|
+
clearTimeout(reqTimeout);
|
5686
|
+
reqTimeout = setTimeout(onTimeout, opts.timeouts.complete);
|
5687
|
+
}
|
5688
|
+
|
5689
|
+
function onProgress() {
|
5690
|
+
if (!connected) onConnect();
|
5691
|
+
}
|
5692
|
+
|
5693
|
+
function onReadyStateChange() {
|
5694
|
+
if (!connected && req.readyState > 1) onConnect();
|
5695
|
+
}
|
5071
5696
|
});
|
5072
5697
|
};
|
5073
5698
|
|
@@ -5103,8 +5728,8 @@ module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
|
|
5103
5728
|
return algoliasearch;
|
5104
5729
|
};
|
5105
5730
|
|
5106
|
-
}).call(this,require(
|
5107
|
-
},{"
|
5731
|
+
}).call(this,require(12))
|
5732
|
+
},{"1":1,"12":12,"22":22,"23":23,"24":24,"26":26,"29":29,"3":3,"34":34,"36":36,"6":6,"7":7}],22:[function(require,module,exports){
|
5108
5733
|
'use strict';
|
5109
5734
|
|
5110
5735
|
module.exports = getDocumentProtocol;
|
@@ -5120,12 +5745,12 @@ function getDocumentProtocol() {
|
|
5120
5745
|
return protocol;
|
5121
5746
|
}
|
5122
5747
|
|
5123
|
-
},{}],
|
5748
|
+
},{}],23:[function(require,module,exports){
|
5124
5749
|
'use strict';
|
5125
5750
|
|
5126
5751
|
module.exports = inlineHeaders;
|
5127
5752
|
|
5128
|
-
var encode = require(
|
5753
|
+
var encode = require(13);
|
5129
5754
|
|
5130
5755
|
function inlineHeaders(url, headers) {
|
5131
5756
|
if (/\?/.test(url)) {
|
@@ -5137,12 +5762,12 @@ function inlineHeaders(url, headers) {
|
|
5137
5762
|
return url + encode(headers);
|
5138
5763
|
}
|
5139
5764
|
|
5140
|
-
},{"
|
5765
|
+
},{"13":13}],24:[function(require,module,exports){
|
5141
5766
|
'use strict';
|
5142
5767
|
|
5143
5768
|
module.exports = jsonpRequest;
|
5144
5769
|
|
5145
|
-
var errors = require(
|
5770
|
+
var errors = require(29);
|
5146
5771
|
|
5147
5772
|
var JSONPCounter = 0;
|
5148
5773
|
|
@@ -5191,7 +5816,7 @@ function jsonpRequest(url, opts, cb) {
|
|
5191
5816
|
url += '&' + opts.jsonBody.params;
|
5192
5817
|
}
|
5193
5818
|
|
5194
|
-
var ontimeout = setTimeout(timeout, opts.
|
5819
|
+
var ontimeout = setTimeout(timeout, opts.timeouts.complete);
|
5195
5820
|
|
5196
5821
|
// script onreadystatechange needed only for
|
5197
5822
|
// <= IE8
|
@@ -5264,10 +5889,10 @@ function jsonpRequest(url, opts, cb) {
|
|
5264
5889
|
}
|
5265
5890
|
}
|
5266
5891
|
|
5267
|
-
},{"
|
5892
|
+
},{"29":29}],25:[function(require,module,exports){
|
5268
5893
|
module.exports = buildSearchMethod;
|
5269
5894
|
|
5270
|
-
var errors = require(
|
5895
|
+
var errors = require(29);
|
5271
5896
|
|
5272
5897
|
function buildSearchMethod(queryParam, url) {
|
5273
5898
|
return function search(query, args, callback) {
|
@@ -5312,12 +5937,12 @@ function buildSearchMethod(queryParam, url) {
|
|
5312
5937
|
};
|
5313
5938
|
}
|
5314
5939
|
|
5315
|
-
},{"
|
5940
|
+
},{"29":29}],26:[function(require,module,exports){
|
5316
5941
|
module.exports = function clone(obj) {
|
5317
5942
|
return JSON.parse(JSON.stringify(obj));
|
5318
5943
|
};
|
5319
5944
|
|
5320
|
-
},{}],
|
5945
|
+
},{}],27:[function(require,module,exports){
|
5321
5946
|
module.exports = function deprecate(fn, message) {
|
5322
5947
|
var warned = false;
|
5323
5948
|
|
@@ -5334,7 +5959,7 @@ module.exports = function deprecate(fn, message) {
|
|
5334
5959
|
return deprecated;
|
5335
5960
|
};
|
5336
5961
|
|
5337
|
-
},{}],
|
5962
|
+
},{}],28:[function(require,module,exports){
|
5338
5963
|
module.exports = function deprecatedMessage(previousUsage, newUsage) {
|
5339
5964
|
var githubAnchorLink = previousUsage.toLowerCase()
|
5340
5965
|
.replace('.', '')
|
@@ -5344,17 +5969,17 @@ module.exports = function deprecatedMessage(previousUsage, newUsage) {
|
|
5344
5969
|
'`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#' + githubAnchorLink;
|
5345
5970
|
};
|
5346
5971
|
|
5347
|
-
},{}],
|
5972
|
+
},{}],29:[function(require,module,exports){
|
5348
5973
|
'use strict';
|
5349
5974
|
|
5350
5975
|
// This file hosts our error definitions
|
5351
5976
|
// We use custom error "types" so that we can act on them when we need it
|
5352
5977
|
// e.g.: if error instanceof errors.UnparsableJSON then..
|
5353
5978
|
|
5354
|
-
var inherits = require(
|
5979
|
+
var inherits = require(7);
|
5355
5980
|
|
5356
5981
|
function AlgoliaSearchError(message, extraProperties) {
|
5357
|
-
var forEach = require(
|
5982
|
+
var forEach = require(5);
|
5358
5983
|
|
5359
5984
|
var error = this;
|
5360
5985
|
|
@@ -5424,7 +6049,7 @@ module.exports = {
|
|
5424
6049
|
)
|
5425
6050
|
};
|
5426
6051
|
|
5427
|
-
},{"
|
6052
|
+
},{"5":5,"7":7}],30:[function(require,module,exports){
|
5428
6053
|
// Parse cloud does not supports setTimeout
|
5429
6054
|
// We do not store a setTimeout reference in the client everytime
|
5430
6055
|
// We only fallback to a fake setTimeout when not available
|
@@ -5433,8 +6058,8 @@ module.exports = function exitPromise(fn, _setTimeout) {
|
|
5433
6058
|
_setTimeout(fn, 0);
|
5434
6059
|
};
|
5435
6060
|
|
5436
|
-
},{}],
|
5437
|
-
var foreach = require(
|
6061
|
+
},{}],31:[function(require,module,exports){
|
6062
|
+
var foreach = require(5);
|
5438
6063
|
|
5439
6064
|
module.exports = function map(arr, fn) {
|
5440
6065
|
var newArr = [];
|
@@ -5444,8 +6069,8 @@ module.exports = function map(arr, fn) {
|
|
5444
6069
|
return newArr;
|
5445
6070
|
};
|
5446
6071
|
|
5447
|
-
},{"
|
5448
|
-
var foreach = require(
|
6072
|
+
},{"5":5}],32:[function(require,module,exports){
|
6073
|
+
var foreach = require(5);
|
5449
6074
|
|
5450
6075
|
module.exports = function merge(destination/* , sources */) {
|
5451
6076
|
var sources = Array.prototype.slice.call(arguments);
|
@@ -5465,14 +6090,30 @@ module.exports = function merge(destination/* , sources */) {
|
|
5465
6090
|
return destination;
|
5466
6091
|
};
|
5467
6092
|
|
5468
|
-
},{"
|
6093
|
+
},{"5":5}],33:[function(require,module,exports){
|
6094
|
+
module.exports = function omit(obj, test) {
|
6095
|
+
var keys = require(10);
|
6096
|
+
var foreach = require(5);
|
6097
|
+
|
6098
|
+
var filtered = {};
|
6099
|
+
|
6100
|
+
foreach(keys(obj), function doFilter(keyName) {
|
6101
|
+
if (test(keyName) !== true) {
|
6102
|
+
filtered[keyName] = obj[keyName];
|
6103
|
+
}
|
6104
|
+
});
|
6105
|
+
|
6106
|
+
return filtered;
|
6107
|
+
};
|
6108
|
+
|
6109
|
+
},{"10":10,"5":5}],34:[function(require,module,exports){
|
5469
6110
|
module.exports = createPlacesClient;
|
5470
6111
|
|
5471
|
-
var buildSearchMethod = require(
|
6112
|
+
var buildSearchMethod = require(25);
|
5472
6113
|
|
5473
6114
|
function createPlacesClient(algoliasearch) {
|
5474
6115
|
return function places(appID, apiKey, opts) {
|
5475
|
-
var cloneDeep = require(
|
6116
|
+
var cloneDeep = require(26);
|
5476
6117
|
|
5477
6118
|
opts = opts && cloneDeep(opts) || {};
|
5478
6119
|
opts.hosts = opts.hosts || [
|
@@ -5496,9 +6137,87 @@ function createPlacesClient(algoliasearch) {
|
|
5496
6137
|
};
|
5497
6138
|
}
|
5498
6139
|
|
5499
|
-
},{"
|
6140
|
+
},{"25":25,"26":26}],35:[function(require,module,exports){
|
6141
|
+
(function (global){
|
6142
|
+
var debug = require(1)('algoliasearch:src/hostIndexState.js');
|
6143
|
+
var localStorageNamespace = 'algoliasearch-client-js';
|
6144
|
+
|
6145
|
+
var store;
|
6146
|
+
var moduleStore = {
|
6147
|
+
state: {},
|
6148
|
+
set: function(key, data) {
|
6149
|
+
this.state[key] = data;
|
6150
|
+
return this.state[key];
|
6151
|
+
},
|
6152
|
+
get: function(key) {
|
6153
|
+
return this.state[key] || null;
|
6154
|
+
}
|
6155
|
+
};
|
6156
|
+
|
6157
|
+
var localStorageStore = {
|
6158
|
+
set: function(key, data) {
|
6159
|
+
try {
|
6160
|
+
var namespace = JSON.parse(global.localStorage[localStorageNamespace]);
|
6161
|
+
namespace[key] = data;
|
6162
|
+
global.localStorage[localStorageNamespace] = JSON.stringify(namespace);
|
6163
|
+
return namespace[key];
|
6164
|
+
} catch (e) {
|
6165
|
+
debug('localStorage set failed with', e);
|
6166
|
+
cleanup();
|
6167
|
+
store = moduleStore;
|
6168
|
+
return store.set(key, data);
|
6169
|
+
}
|
6170
|
+
},
|
6171
|
+
get: function(key) {
|
6172
|
+
return JSON.parse(global.localStorage[localStorageNamespace])[key] || null;
|
6173
|
+
}
|
6174
|
+
};
|
6175
|
+
|
6176
|
+
store = supportsLocalStorage() ? localStorageStore : moduleStore;
|
6177
|
+
|
6178
|
+
module.exports = {
|
6179
|
+
get: getOrSet,
|
6180
|
+
set: getOrSet
|
6181
|
+
};
|
6182
|
+
|
6183
|
+
function getOrSet(key, data) {
|
6184
|
+
if (arguments.length === 1) {
|
6185
|
+
return store.get(key);
|
6186
|
+
}
|
6187
|
+
|
6188
|
+
return store.set(key, data);
|
6189
|
+
}
|
6190
|
+
|
6191
|
+
function supportsLocalStorage() {
|
6192
|
+
try {
|
6193
|
+
if ('localStorage' in global &&
|
6194
|
+
global.localStorage !== null &&
|
6195
|
+
!global.localStorage[localStorageNamespace]) {
|
6196
|
+
// actual creation of the namespace
|
6197
|
+
global.localStorage.setItem(localStorageNamespace, JSON.stringify({}));
|
6198
|
+
return true;
|
6199
|
+
}
|
6200
|
+
|
6201
|
+
return false;
|
6202
|
+
} catch (_) {
|
6203
|
+
return false;
|
6204
|
+
}
|
6205
|
+
}
|
6206
|
+
|
6207
|
+
// In case of any error on localStorage, we clean our own namespace, this should handle
|
6208
|
+
// quota errors when a lot of keys + data are used
|
6209
|
+
function cleanup() {
|
6210
|
+
try {
|
6211
|
+
global.localStorage.removeItem(localStorageNamespace);
|
6212
|
+
} catch (_) {
|
6213
|
+
// nothing to do
|
6214
|
+
}
|
6215
|
+
}
|
6216
|
+
|
6217
|
+
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
6218
|
+
},{"1":1}],36:[function(require,module,exports){
|
5500
6219
|
'use strict';
|
5501
6220
|
|
5502
|
-
module.exports = '3.
|
6221
|
+
module.exports = '3.20.3';
|
5503
6222
|
|
5504
|
-
},{}]},{},[
|
6223
|
+
},{}]},{},[19]);
|