From 26917e19898213198c3393287f48d467a5dd21ea Mon Sep 17 00:00:00 2001 From: Max Hegler Date: Tue, 18 Jan 2022 13:40:18 -0800 Subject: [PATCH] fixed missing built package --- dist/ssapi-wrapper.js | 2 +- dist/ssapi-wrapper.js.map | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/ssapi-wrapper.js b/dist/ssapi-wrapper.js index 7023366..d2ed0b2 100644 --- a/dist/ssapi-wrapper.js +++ b/dist/ssapi-wrapper.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SSAPI=t():e.SSAPI=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i=Array.isArray,s=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),o=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n1;){var t=e.pop(),r=t.obj[t.prop];if(i(r)){for(var n=[],s=0;s=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=n.charAt(o):a<128?i+=s[a]:a<2048?i+=s[192|a>>6]+s[128|63&a]:a<55296||a>=57344?i+=s[224|a>>12]+s[128|a>>6&63]+s[128|63&a]:(o+=1,a=65536+((1023&a)<<10|1023&n.charCodeAt(o)),i+=s[240|a>>18]+s[128|a>>12&63]+s[128|a>>6&63]+s[128|63&a])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(i(e)){for(var r=[],n=0;n0?b+g:""}},function(e,t,r){"use strict";var n=r(0),i=Object.prototype.hasOwnProperty,s=Array.isArray,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:n.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},a=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,r,n){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(s),c=a?s.slice(0,a.index):s,u=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;u.push(c)}for(var f=0;r.depth>0&&null!==(a=o.exec(s))&&f=0;--s){var o,a=e[s];if("[]"===a&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,u=parseInt(c,10);r.parseArrays||""!==c?!isNaN(u)&&a!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(o=[])[u]=i:o[c]=i:o={0:i}}i=o}return i}(u,t,r,n)}};e.exports=function(e,t){var r=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?o.charset:e.charset;return{allowDots:void 0===e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:o.comma,decoder:"function"==typeof e.decoder?e.decoder:o.decoder,delimiter:"string"==typeof e.delimiter||n.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var u="string"==typeof e?function(e,t){var r,c={},u=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,p=u.split(t.delimiter,f),h=-1,d=t.charset;if(t.charsetSentinel)for(r=0;r-1&&(m=s(m)?[m]:m),i.call(c,y)?c[y]=n.combine(c[y],m):c[y]=m}return c}(e,r):e,f=r.plainObjects?Object.create(null):{},p=Object.keys(u),h=0;h{let r="".concat(t.type,".").concat(t.field);if(Array.isArray(t.value)){let n="".concat(r,".low"),i="".concat(r,".high");return{...e,...null!=t.value[0]&&{[n]:Array.isArray(e[n])?e[n].concat([t.value[0]]):[t.value[0]]},...null!=t.value[1]&&{[i]:Array.isArray(e[i])?e[i].concat([t.value[1]]):[t.value[1]]}}}return e[r]=e[r]||[],e[r].push(t.value),e},{})}_outputSort(){if(this.sorting.field&&this.sorting.direction)return{["sort.".concat(this.sorting.field)]:this.sorting.direction}}_transformFilterType(e){return e?"bgfilter":"filter"}addFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].addFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].addFilter - `value` is undefined.");const n={field:e,value:t,type:this._transformFilterType(r)};return this.filters.push(n),this}removeFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].removeFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].removeFilter - `value` is undefined.");const n=this._transformFilterType(r);return this.filters=this.filters.filter(r=>!(r.field==e&&r.type==n&&this._compareFilterValues(r.value,t))),this}toggleFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].toggleFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].toggleFilter - `value` is undefined.");const n=this._transformFilterType(r);return this.filters.find(r=>r.field==e&&r.type==n&&this._compareFilterValues(r.value,t))?this.removeFilter(e,t,r):this.addFilter(e,t,r)}query(e){return this.params.q=e,this}perPage(e){return this.params.resultsPerPage=e,this}page(e){return this.params.page=e,this}sort(e,t="asc"){if(null==e)throw new TypeError('[SSAPI][State].sort - "field" is undefined.');return this.sorting={field:e,direction:t},this}lock(){return this.lockedState={params:{...this.params},filters:[...this.filters],sorting:{...this.sorting}},this}reset(){return this.params=this.lockedState.params?{...this.lockedState.params}:{...this.defaultParams},this.filters=this.lockedState.filters?[...this.lockedState.filters]:[],this.sorting=this.lockedState.sorting?{...this.lockedState.sorting}:{},this}clearFacets(){return this.filters=this.filters.filter(e=>!("filter"==e.type)),this}other(e,t){return this.params[e]=t,this}get output(){return{...this.params,...this._outputFilters(),...this._outputSort()}}}const s={disableSpellCorrect:!0,limit:4};class o{constructor(e,t={},r=!1){this.pubId=e,this.defaultParams={pubId:this.pubId,...s,...t},this.params={...this.defaultParams},this.debug=r}query(e){return this.params.query=e,this}get output(){return{...this.params}}}var a=r(2),l=r.n(a);const c=new class{constructor(e=1e3){this.store=new Map,this.throttleTime=e}access(e){const t=this.store.get(e);if(t){const r=Date.now();return t.timestamp-r>this.throttleTime?this.remove(e):t.data}return null}insert(e,t){const r={timestamp:Date.now(),data:t};return this.store.set(e,r),!0}purge(){return this.store.clear(),!0}remove(e){return this.store.delete(e)}}(3e4);class u{constructor(e,t,r){this.endpoint=e,this.method=t,this.params=r}serializeParams(e){return l.a.stringify(e,{arrayFormat:"repeat"})}buildUrl(e,t){return e.indexOf("?")>-1?"".concat(e).concat(t):"".concat(e,"?").concat(t)}send(){return new Promise((e,t)=>{const r=this.serializeParams({...this.params}),n=this.buildUrl(this.endpoint,r),i=c.access(n);if(null!=i)return e(i);const s=new XMLHttpRequest;s.open("GET",n),s.responseType="json",s.send(),s.onreadystatechange=()=>{if(4==s.readyState)if(200==s.status){const t={response:{status:s.status,responseURL:s.responseURL,responseType:s.responseType,data:"object"==typeof s.response?s.response:JSON.parse(s.response)},requestParams:{...this.params},requestQueryString:r};c.insert(n,t),e(t)}else console.error("[SSAPI][Request].send - Error with response.","Code: ".concat(s.status,".")),t(s)}})}}r(6);class f{constructor(e,t={},r={},n=!1){if(null==e)throw new TypeError("[SSAPI][Client].constructor - `siteId` is undefined.");this.states={autocomplete:new o(e,r,n),search:new i(e,t,n)},this.endpoints={autocomplete:"https://".concat(e,".a.searchspring.io/api/suggest/query"),search:"https://".concat(e,".a.searchspring.io/api/search/search.json")},this.method="GET",this.events=["autocomplete","search"],this.bus=document.createElement("div"),this.debug=n,this.stateSetFromFunction=!1,this.suggestedSearchTerm=null}search(){return new u(this.endpoints.search,this.method,this.states.search.output).send().then(e=>(this.bus.dispatchEvent(new CustomEvent("search",{detail:e})),this.afterSearch(e),e))}autocomplete(){return new u(this.endpoints.autocomplete,this.method,this.states.autocomplete.output).send().then(e=>{var t,r,n;return this.suggestedSearchTerm=null==e||null===(t=e.response)||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.suggested)||void 0===n?void 0:n.text,this.bus.dispatchEvent(new CustomEvent("autocomplete",{detail:e})),e})}on(e,t){if(-1===this.events.indexOf(e))throw new Error('[SSAPI][Client].on - Event "'.concat(e,'" does not exist.'));this.bus.addEventListener(e,t,!1)}off(e,t){if(-1===this.events.indexOf(e))throw new Error('[SSAPI][Client].off - Event "'.concat(e,'" does not exist.'));this.bus.removeEventListener(e,t,!1)}afterSearch(e){this.stateSetFromFunction&&(this.stateSetFromFunction=!1,this.states.search.filters=this.states.search.filters.filter(e=>"bgfilter"===e.type),e.response.data&&e.response.data.filterSummary&&e.response.data.filterSummary.length>0&&e.response.data.filterSummary.map(e=>{this.filter(e.field,"object"==typeof e.value?[e.value.rangeLow,e.value.rangeHigh]:e.value)}))}setState(e){if(null==e)throw new TypeError("[SSAPI][Client].setState - `state` is undefined.");const t=[{pattern:/^sort\.(.*)$/,fn:"sort",match:1},{pattern:/^filter\.(.*)$/,fn:"filter",match:1},{pattern:/^bgfilter\.(.*)$/,fn:"backgroundFilter",match:1}];for(let r in e){let n=e[r];switch(r){case"q":this.query(n,!1);break;case"resultsPerPage":this.perPage(n,!1);break;case"page":this.page(n);break;default:if(!t.some(e=>{const t=r.match(e.pattern);if(t)return Array.isArray(n)?n.map(r=>{null!=r&&this[e.fn](t[e.match],r,!1)}):null!=n&&this[e.fn](t[e.match],n,!1),!0})){this.other(r,n);break}}}return this.stateSetFromFunction=!0,this}other(e,t){return this.states.search.other(e,t),this}reset(){return this.states.search.reset(),this}lock(){return this.states.search.lock(),this}clearFacets(e=!0){return e&&this.states.search.page(1),this.states.search.clearFacets(),this}clearFilters(e){return this.clearFacets(e),this}perPage(e,t=!0){return t&&this.states.search.page(1),this.states.search.perPage(e),this}page(e){return this.states.search.page(e),this}sort(e,t){return this.debug&&console.trace("[SSAPI][Client].sort - field: ".concat(e," | direction: ").concat(t)),this.states.search.sort(e,t),this}filter(e,t,r=!0){return r&&this.states.search.page(1),this.states.search.toggleFilter(e,t,!1),this}facet(e,t,r){return this.filter(e,t,r),this}backgroundFilter(e,t,r=!0){return r&&this.states.search.page(1),this.states.search.toggleFilter(e,t,!0),this}backgroundFacet(e,t,r){return this.backgroundFilter(e,t,r),this}query(e,t=!0){return t&&this.states.search.page(1),this.states.search.query(e),this.states.autocomplete.query(e),this}}const p=e=>{const t=[];for(let r=1;r<=e.totalPages;r++)t.push(r);return t}}])})); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SSAPI=t():e.SSAPI=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i=Array.isArray,s=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),o=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n1;){var t=e.pop(),r=t.obj[t.prop];if(i(r)){for(var n=[],s=0;s=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=n.charAt(o):a<128?i+=s[a]:a<2048?i+=s[192|a>>6]+s[128|63&a]:a<55296||a>=57344?i+=s[224|a>>12]+s[128|a>>6&63]+s[128|63&a]:(o+=1,a=65536+((1023&a)<<10|1023&n.charCodeAt(o)),i+=s[240|a>>18]+s[128|a>>12&63]+s[128|a>>6&63]+s[128|63&a])}return i},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(i(e)){for(var r=[],n=0;n0?b+g:""}},function(e,t,r){"use strict";var n=r(0),i=Object.prototype.hasOwnProperty,s=Array.isArray,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:n.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},a=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,r,n){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(s),c=a?s.slice(0,a.index):s,u=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;u.push(c)}for(var f=0;r.depth>0&&null!==(a=o.exec(s))&&f=0;--s){var o,a=e[s];if("[]"===a&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,u=parseInt(c,10);r.parseArrays||""!==c?!isNaN(u)&&a!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(o=[])[u]=i:o[c]=i:o={0:i}}i=o}return i}(u,t,r,n)}};e.exports=function(e,t){var r=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?o.charset:e.charset;return{allowDots:void 0===e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:o.comma,decoder:"function"==typeof e.decoder?e.decoder:o.decoder,delimiter:"string"==typeof e.delimiter||n.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var u="string"==typeof e?function(e,t){var r,c={},u=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,f=t.parameterLimit===1/0?void 0:t.parameterLimit,p=u.split(t.delimiter,f),h=-1,d=t.charset;if(t.charsetSentinel)for(r=0;r-1&&(m=s(m)?[m]:m),i.call(c,y)?c[y]=n.combine(c[y],m):c[y]=m}return c}(e,r):e,f=r.plainObjects?Object.create(null):{},p=Object.keys(u),h=0;h{let r="".concat(t.type,".").concat(t.field);if(Array.isArray(t.value)){let n="".concat(r,".low"),i="".concat(r,".high");return{...e,...null!=t.value[0]&&{[n]:Array.isArray(e[n])?e[n].concat([t.value[0]]):[t.value[0]]},...null!=t.value[1]&&{[i]:Array.isArray(e[i])?e[i].concat([t.value[1]]):[t.value[1]]}}}return e[r]=e[r]||[],e[r].push(t.value),e},{})}_outputSort(){if(this.sorting.field&&this.sorting.direction)return{["sort.".concat(this.sorting.field)]:this.sorting.direction}}_transformFilterType(e){return e?"bgfilter":"filter"}addFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].addFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].addFilter - `value` is undefined.");const n={field:e,value:t,type:this._transformFilterType(r)};return this.filters.push(n),this}removeFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].removeFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].removeFilter - `value` is undefined.");const n=this._transformFilterType(r);return this.filters=this.filters.filter(r=>!(r.field==e&&r.type==n&&this._compareFilterValues(r.value,t))),this}toggleFilter(e,t,r=!1){if(null==e)throw new TypeError("[SSAPI][State].toggleFilter - `field` is undefined.");if(null==t)throw new TypeError("[SSAPI][State].toggleFilter - `value` is undefined.");const n=this._transformFilterType(r);return this.filters.find(r=>r.field==e&&r.type==n&&this._compareFilterValues(r.value,t))?this.removeFilter(e,t,r):this.addFilter(e,t,r)}query(e){return this.params.q=e,this}perPage(e){return this.params.resultsPerPage=e,this}page(e){return this.params.page=e,this}sort(e,t="asc"){if(null==e)throw new TypeError('[SSAPI][State].sort - "field" is undefined.');return this.sorting={field:e,direction:t},this}lock(){return this.lockedState={params:{...this.params},filters:[...this.filters],sorting:{...this.sorting}},this}reset(){return this.params=this.lockedState.params?{...this.lockedState.params}:{...this.defaultParams},this.filters=this.lockedState.filters?[...this.lockedState.filters]:[],this.sorting=this.lockedState.sorting?{...this.lockedState.sorting}:{},this}clearFacets(){return this.filters=this.filters.filter(e=>!("filter"==e.type)),this}other(e,t){return this.params[e]=t,this}get output(){return{...this.params,...this._outputFilters(),...this._outputSort()}}}const s={disableSpellCorrect:!0,limit:4};class o{constructor(e,t={},r=!1){this.pubId=e,this.defaultParams={pubId:this.pubId,...s,...t},this.params={...this.defaultParams},this.debug=r}query(e){return this.params.query=e,this}get output(){return{...this.params}}}var a=r(2),l=r.n(a);const c=new class{constructor(e=1e3){this.store=new Map,this.throttleTime=e}access(e){const t=this.store.get(e);if(t){const r=Date.now();return t.timestamp-r>this.throttleTime?this.remove(e):t.data}return null}insert(e,t){const r={timestamp:Date.now(),data:t};return this.store.set(e,r),!0}purge(){return this.store.clear(),!0}remove(e){return this.store.delete(e)}}(3e4);class u{constructor(e,t,r){this.endpoint=e,this.method=t,this.params=r}serializeParams(e){return l.a.stringify(e,{arrayFormat:"repeat"})}buildUrl(e,t){return e.indexOf("?")>-1?"".concat(e).concat(t):"".concat(e,"?").concat(t)}send(){return new Promise((e,t)=>{const r=this.serializeParams({...this.params}),n=this.buildUrl(this.endpoint,r),i=c.access(n);if(null!=i)return e(i);const s=new XMLHttpRequest;s.open("GET",n),s.responseType="json",s.send(),s.onreadystatechange=()=>{if(4==s.readyState)if(200==s.status){const t={response:{status:s.status,responseURL:s.responseURL,responseType:s.responseType,data:"object"==typeof s.response?s.response:JSON.parse(s.response)},requestParams:{...this.params},requestQueryString:r};c.insert(n,t),e(t)}else console.error("[SSAPI][Request].send - Error with response.","Code: ".concat(s.status,".")),t(s)}})}}r(6);class f{constructor(e,t={},r={},n=!1){if(null==e)throw new TypeError("[SSAPI][Client].constructor - `siteId` is undefined.");this.states={autocomplete:new o(e,r,n),search:new i(e,t,n)},this.endpoints={autocomplete:"https://".concat(e,".a.searchspring.io/api/suggest/query"),search:"https://".concat(e,".a.searchspring.io/api/search/search.json")},this.method="GET",this.events=["autocomplete","search"],this.bus=document.createElement("div"),this.debug=n,this.stateSetFromFunction=!1,this.suggestedQuery=null}search(){return new u(this.endpoints.search,this.method,this.states.search.output).send().then(e=>(this.bus.dispatchEvent(new CustomEvent("search",{detail:e})),this.afterSearch(e),e))}autocomplete(){return new u(this.endpoints.autocomplete,this.method,this.states.autocomplete.output).send().then(e=>{var t,r,n;return this.suggestedQuery=null==e||null===(t=e.response)||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.suggested)||void 0===n?void 0:n.text,this.bus.dispatchEvent(new CustomEvent("autocomplete",{detail:e})),e})}on(e,t){if(-1===this.events.indexOf(e))throw new Error('[SSAPI][Client].on - Event "'.concat(e,'" does not exist.'));this.bus.addEventListener(e,t,!1)}off(e,t){if(-1===this.events.indexOf(e))throw new Error('[SSAPI][Client].off - Event "'.concat(e,'" does not exist.'));this.bus.removeEventListener(e,t,!1)}afterSearch(e){this.stateSetFromFunction&&(this.stateSetFromFunction=!1,this.states.search.filters=this.states.search.filters.filter(e=>"bgfilter"===e.type),e.response.data&&e.response.data.filterSummary&&e.response.data.filterSummary.length>0&&e.response.data.filterSummary.map(e=>{this.filter(e.field,"object"==typeof e.value?[e.value.rangeLow,e.value.rangeHigh]:e.value)}))}setState(e){if(null==e)throw new TypeError("[SSAPI][Client].setState - `state` is undefined.");const t=[{pattern:/^sort\.(.*)$/,fn:"sort",match:1},{pattern:/^filter\.(.*)$/,fn:"filter",match:1},{pattern:/^bgfilter\.(.*)$/,fn:"backgroundFilter",match:1}];for(let r in e){let n=e[r];switch(r){case"q":this.query(n,!1);break;case"resultsPerPage":this.perPage(n,!1);break;case"page":this.page(n);break;default:if(!t.some(e=>{const t=r.match(e.pattern);if(t)return Array.isArray(n)?n.map(r=>{null!=r&&this[e.fn](t[e.match],r,!1)}):null!=n&&this[e.fn](t[e.match],n,!1),!0})){this.other(r,n);break}}}return this.stateSetFromFunction=!0,this}other(e,t){return this.states.search.other(e,t),this}reset(){return this.states.search.reset(),this}lock(){return this.states.search.lock(),this}clearFacets(e=!0){return e&&this.states.search.page(1),this.states.search.clearFacets(),this}clearFilters(e){return this.clearFacets(e),this}perPage(e,t=!0){return t&&this.states.search.page(1),this.states.search.perPage(e),this}page(e){return this.states.search.page(e),this}sort(e,t){return this.debug&&console.trace("[SSAPI][Client].sort - field: ".concat(e," | direction: ").concat(t)),this.states.search.sort(e,t),this}filter(e,t,r=!0){return r&&this.states.search.page(1),this.states.search.toggleFilter(e,t,!1),this}facet(e,t,r){return this.filter(e,t,r),this}backgroundFilter(e,t,r=!0){return r&&this.states.search.page(1),this.states.search.toggleFilter(e,t,!0),this}backgroundFacet(e,t,r){return this.backgroundFilter(e,t,r),this}query(e,t=!0){return t&&this.states.search.page(1),this.states.search.query(e),this.states.autocomplete.query(e),this}}const p=e=>{const t=[];for(let r=1;r<=e.totalPages;r++)t.push(r);return t}}])})); //# sourceMappingURL=ssapi-wrapper.js.map \ No newline at end of file diff --git a/dist/ssapi-wrapper.js.map b/dist/ssapi-wrapper.js.map index f9b45a1..2931211 100644 --- a/dist/ssapi-wrapper.js.map +++ b/dist/ssapi-wrapper.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://SSAPI/webpack/universalModuleDefinition","webpack://SSAPI/webpack/bootstrap","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/utils.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/formats.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/index.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/stringify.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/parse.js","webpack://SSAPI/./node_modules/.pnpm/custom-event-polyfill@1.0.7/node_modules/custom-event-polyfill/polyfill.js","webpack://SSAPI/./src/SSAPI/SearchState.js","webpack://SSAPI/./src/SSAPI/AutocompleteState.js","webpack://SSAPI/./src/SSAPI/Request.js","webpack://SSAPI/./src/SSAPI/RequestCache.js","webpack://SSAPI/./src/SSAPI/Client.js","webpack://SSAPI/./src/index.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","has","isArray","Array","hexTable","array","push","toString","toUpperCase","arrayToObject","source","options","obj","plainObjects","length","assign","target","keys","reduce","acc","combine","a","b","concat","compact","queue","prop","refs","item","j","val","indexOf","pop","compacted","compactQueue","decode","str","decoder","charset","strWithoutPlus","replace","unescape","decodeURIComponent","e","encode","defaultEncoder","string","String","escape","$0","parseInt","slice","out","charCodeAt","charAt","isBuffer","constructor","isRegExp","maybeMap","fn","mapped","merge","allowPrototypes","mergeTarget","forEach","targetItem","percentTwenties","util","Format","RFC1738","RFC3986","formatters","stringify","parse","formats","utils","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","arr","valueOrArray","apply","toISO","Date","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","encodeValuesOnly","format","formatter","serializeDate","date","skipNulls","strictNullHandling","generateArrayPrefix","filter","sort","v","join","objKeys","values","keyPrefix","opts","undefined","TypeError","normalizeStringifyOptions","arrayFormat","joined","arrayLimit","depth","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","split","parseKeys","givenKey","valuesParsed","child","segment","exec","parent","index","chain","leaf","cleanRoot","isNaN","0","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","Infinity","parts","skipIndex","part","bracketEqualsPos","pos","encodedVal","parseValues","newObj","window","ce","CustomEvent","cancelable","preventDefault","defaultPrevented","Error","event","params","evt","origPrevent","bubbles","document","createEvent","initCustomEvent","detail","Event","DEFAULT_PARAMS","resultsFormat","SearchState","siteId","passedDefaultParams","debug","defaultParams","filters","sorting","lockedState","_compareFilterRanges","range1","range2","_compareFilterValues","value1","value2","arrayCheck1","arrayCheck2","_outputFilters","output","keyRoot","type","field","lowKey","highKey","_outputSort","direction","_transformFilterType","backgroundFilter","addFilter","removeFilter","toggleFilter","find","query","q","perPage","resultsPerPage","page","lock","reset","clearFacets","other","disableSpellCorrect","AutocompleteState","pubId","cache","throttleTime","store","Map","access","record","now","timestamp","remove","data","insert","set","purge","clear","delete","Request","endpoint","method","serializeParams","qs","buildUrl","send","Promise","resolve","reject","queryString","url","cacheResponse","xhr","XMLHttpRequest","open","responseType","onreadystatechange","readyState","status","returnObject","response","responseURL","JSON","requestParams","requestQueryString","console","error","Client","defaultSearchParams","defaultAutocompleteParams","states","autocomplete","search","endpoints","events","bus","createElement","stateSetFromFunction","suggestedSearchTerm","then","request","dispatchEvent","afterSearch","suggested","text","on","callback","addEventListener","off","removeEventListener","filterSummary","map","rangeLow","rangeHigh","setState","state","dynamicSetTests","pattern","match","some","test","filterValue","resetPage","clearFilters","trace","facet","backgroundFacet","createPages","pagination","pages","totalPages"],"mappings":"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","file":"ssapi-wrapper.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SSAPI\"] = factory();\n\telse\n\t\troot[\"SSAPI\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n }).join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj; // eslint-disable-line no-param-reassign\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","const DEFAULT_PARAMS = {\n\tresultsFormat: 'native'\n};\n\nclass SearchState {\n\n\tconstructor( siteId, passedDefaultParams = {}, debug = false ) {\n\n\t\tthis.siteId = siteId;\n\t\tthis.defaultParams = { siteId: this.siteId, ...DEFAULT_PARAMS, ...passedDefaultParams };\n\t\tthis.params = { ...this.defaultParams };\n\t\tthis.filters = [];\n\t\tthis.sorting = {};\n\t\tthis.debug = debug;\n\t\tthis.lockedState = {};\n\n\t}\n\n\t_compareFilterRanges( range1, range2 ) {\n\t\treturn ( range1[ 0 ] == range2[ 0 ] && range1[ 1 ] == range2[ 1 ] );\n\t}\n\n\t_compareFilterValues( value1, value2 ) {\n\n\t\tconst arrayCheck1 = Array.isArray( value1 );\n\t\tconst arrayCheck2 = Array.isArray( value2 );\n\n\t\tif ( arrayCheck1 && arrayCheck2 ) {\n\t\t\treturn this._compareFilterRanges( value1, value2 );\n\t\t}\n\t\telse if ( arrayCheck1 || arrayCheck2 ) {\n\t\t\treturn false;\n\t\t}\n\t\telse {\n\t\t\treturn ( value1 == value2 );\n\t\t}\n\n\t}\n\n\t_outputFilters() {\n\n\t\treturn this.filters.reduce(( output, filter ) => {\n\n\t\t\tlet keyRoot = `${ filter.type }.${ filter.field }`;\n\n\t\t\tif ( Array.isArray( filter.value ) ) {\n\n\t\t\t\tlet lowKey = `${ keyRoot }.low`;\n\t\t\t\tlet highKey = `${ keyRoot }.high`;\n\n\t\t\t\treturn {\n\t\t\t\t\t...output,\n\t\t\t\t\t...(filter.value[0] != undefined && { [ lowKey ]: ( Array.isArray( output[ lowKey ] ) ? output[ lowKey ].concat( [ filter.value[0] ] ) : [ filter.value[0] ] ) }),\n\t\t\t\t\t...(filter.value[1] != undefined && { [ highKey ]: ( Array.isArray( output[ highKey ] ) ? output[ highKey ].concat( [ filter.value[1] ] ) : [ filter.value[1] ] ) })\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\toutput[ keyRoot ] = output[ keyRoot ] || [];\n\t\t\t\toutput[ keyRoot ].push( filter.value );\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t}, {});\n\n\t}\n\n\t_outputSort() {\n\n\t\tif ( this.sorting.field && this.sorting.direction ) {\n\n\t\t\treturn { [ `sort.${ this.sorting.field }` ]: this.sorting.direction };\n\n\t\t}\n\n\t\treturn;\n\n\t}\n\n\t_transformFilterType( backgroundFilter ) {\n\t\treturn ( backgroundFilter ) ?\n\t\t\t'bgfilter' :\n\t\t\t'filter';\n\t}\n\n\taddFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].addFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].addFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst filter = {\n\t\t\tfield: field,\n\t\t\tvalue: value,\n\t\t\ttype: this._transformFilterType( backgroundFilter )\n\t\t};\n\n\t\tthis.filters.push( filter );\n\n\t\treturn this;\n\n\t}\n\n\tremoveFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].removeFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].removeFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst type = this._transformFilterType( backgroundFilter );\n\n\t\tthis.filters = this.filters.filter(( filter ) => {\n\t\t\treturn !(\n\t\t\t\tfilter.field == field &&\n\t\t\t\tfilter.type == type &&\n\t\t\t\tthis._compareFilterValues( filter.value, value )\n\t\t\t);\n\t\t});\n\n\t\treturn this;\n\n\t}\n\n\ttoggleFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].toggleFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].toggleFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst type = this._transformFilterType( backgroundFilter );\n\n\t\tconst foundFilter = this.filters.find(( filter ) => {\n\t\t\treturn (\n\t\t\t\tfilter.field == field &&\n\t\t\t\tfilter.type == type &&\n\t\t\t\tthis._compareFilterValues( filter.value, value )\n\t\t\t);\n\t\t});\n\n\t\tif ( foundFilter ) {\n\t\t\treturn this.removeFilter( field, value, backgroundFilter );\n\t\t}\n\t\telse {\n\t\t\treturn this.addFilter( field, value, backgroundFilter );\n\t\t}\n\n\t}\n\n\tquery( q ) {\n\n\t\tthis.params.q = q;\n\n\t\treturn this;\n\n\t}\n\n\tperPage( n ) {\n\n\t\tthis.params.resultsPerPage = n;\n\n\t\treturn this;\n\n\t}\n\n\tpage( n ) {\n\n\t\tthis.params.page = n;\n\n\t\treturn this;\n\n\t}\n\n\tsort( field, direction = 'asc' ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].sort - \"field\" is undefined.' );\n\t\t}\n\n\t\tthis.sorting = { field: field, direction: direction };\n\n\t\treturn this;\n\n\t}\n\n\tlock() {\n\n\t\tthis.lockedState = {\n\t\t\tparams: { ...this.params },\n\t\t\tfilters: [ ...this.filters ],\n\t\t\tsorting: { ...this.sorting }\n\t\t};\n\n\t\treturn this;\n\n\t};\n\n\treset() {\n\n\t\tthis.params = ( this.lockedState.params ) ? { ...this.lockedState.params } : { ...this.defaultParams };\n\t\tthis.filters = ( this.lockedState.filters ) ? [ ...this.lockedState.filters ] : [];\n\t\tthis.sorting = ( this.lockedState.sorting ) ? { ...this.lockedState.sorting } : {};\n\n\t\treturn this;\n\n\t}\n\n\tclearFacets() {\n\n\t\tthis.filters = this.filters.filter(( filter ) => {\n\t\t\treturn !( filter.type == 'filter' );\n\t\t});\n\n\t\treturn this;\n\n\t};\n\n\tother( key, value ) {\n\n\t\tthis.params[ key ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tget output() {\n\n\t\treturn {\n\t\t\t...this.params,\n\t\t\t...this._outputFilters(),\n\t\t\t...this._outputSort()\n\t\t};\n\n\t}\n\n};\n\nexport {\n\tSearchState\n};\n","const DEFAULT_PARAMS = {\n\tdisableSpellCorrect: true,\n\tlimit: 4\n};\n\nclass AutocompleteState {\n\n\tconstructor( pubId, passedDefaultParams = {}, debug = false ) {\n\t\tthis.pubId = pubId;\n\t\tthis.defaultParams = { pubId: this.pubId, ...DEFAULT_PARAMS, ...passedDefaultParams };\n\t\tthis.params = { ...this.defaultParams };\n\t\tthis.debug = debug;\n\t}\n\n\tquery( query ) {\n\t\tthis.params.query = query;\n\t\treturn this;\n\t}\n\n\tget output() {\n\n\t\treturn {\n\t\t\t...this.params\n\t\t};\n\n\t}\n\n};\n\nexport {\n\tAutocompleteState\n};\n","import qs from 'qs'\nimport {RequestCache} from './RequestCache'\n\nconst DONE = 4;\nconst OK = 200;\n\nconst cache = new RequestCache( 30000 );\n\nclass Request {\n\n\tconstructor( endpoint, method, params ) {\n\t\tthis.endpoint = endpoint;\n\t\tthis.method = method;\n\t\tthis.params = params;\n\t}\n\n\tserializeParams( params ) {\n\t\treturn qs.stringify( params, { arrayFormat: 'repeat' } )\n\t}\n\n\tbuildUrl( endpoint, params ) {\n\t\tif ( endpoint.indexOf( '?' ) > -1 ) {\n\t\t\treturn `${ endpoint }${ params }`;\n\t\t}\n\t\telse {\n\t\t\treturn `${ endpoint }?${ params }`;\n\t\t}\n\t}\n\n\tsend() {\n\n\t\treturn new Promise(( resolve, reject ) => {\n\n\t\t\tconst queryString = this.serializeParams( { ...this.params } );\n\t\t\tconst url = this.buildUrl( this.endpoint, queryString );\n\n\t\t\tconst cacheResponse = cache.access( url );\n\t\t\tif ( cacheResponse != undefined ) {\n\t\t\t\treturn resolve( cacheResponse );\n\t\t\t}\n\n\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\txhr.open( 'GET', url );\n\t\t\txhr.responseType = 'json';\n\t\t\txhr.send();\n\n\t\t\txhr.onreadystatechange = () => {\n\n\t\t\t\tif ( xhr.readyState == DONE ) {\n\n\t\t\t\t\tif ( xhr.status == OK ) {\n\n\t\t\t\t\t\tconst returnObject = {\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatus: xhr.status,\n\t\t\t\t\t\t\t\tresponseURL: xhr.responseURL,\n\t\t\t\t\t\t\t\tresponseType: xhr.responseType,\n\t\t\t\t\t\t\t\tdata: ( typeof xhr.response == 'object' ) ? xhr.response : JSON.parse( xhr.response )\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequestParams: { ...this.params },\n\t\t\t\t\t\t\trequestQueryString: queryString\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcache.insert( url, returnObject );\n\n\t\t\t\t\t\tresolve( returnObject );\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\n\t\t\t\t\t\tconsole.error( `[SSAPI][Request].send - Error with response.`, `Code: ${ xhr.status }.` );\n\n\t\t\t\t\t\treject( xhr );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n\n};\n\nexport {\n\tRequest\n};\n","class RequestCache {\n\n\tconstructor( throttleTime = 1000 ) {\n\n\t\tthis.store = new Map();\n\t\tthis.throttleTime = throttleTime;\n\n\t}\n\n\taccess( key ) {\n\n\t\tconst record = this.store.get( key );\n\n\t\tif ( record ) {\n\n\t\t\tconst now = Date.now();\n\t\t\t\n\t\t\tif ( record.timestamp - now > this.throttleTime ) {\n\t\t\t\treturn this.remove( key );\n\t\t\t}\n\n\t\t\treturn record.data;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tinsert( key, value ) {\n\n\t\tconst record = {\n\t\t\ttimestamp: Date.now(),\n\t\t\tdata: value\n\t\t};\n\n\t\tthis.store.set( key, record );\n\n\t\treturn true;\n\n\t}\n\n\tpurge() {\n\n\t\tthis.store.clear();\n\n\t\treturn true;\n\n\t}\n\n\tremove( key ) {\n\n\t\treturn this.store.delete( key );\n\n\t}\n\n};\n\nexport {\n\tRequestCache\n};\n","import {SearchState} from './SearchState'\nimport {AutocompleteState} from './AutocompleteState';\nimport {Request} from './Request'\nimport 'custom-event-polyfill'\n\nclass Client {\n\n\tconstructor( siteId, defaultSearchParams = {}, defaultAutocompleteParams = {}, debug = false ) {\n\n\t\tif ( siteId == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][Client].constructor - `siteId` is undefined.' );\n\t\t}\n\n\t\tthis.states = {\n\t\t\tautocomplete: new AutocompleteState( siteId, defaultAutocompleteParams, debug ),\n\t\t\tsearch: new SearchState( siteId, defaultSearchParams, debug )\n\t\t}\n\n\t\tthis.endpoints = {\n\t\t\tautocomplete: `https://${siteId}.a.searchspring.io/api/suggest/query`,\n\t\t\tsearch: `https://${siteId}.a.searchspring.io/api/search/search.json`\n\t\t}\n\n\t\tthis.method = 'GET';\n\n\t\tthis.events = [\n\t\t\t'autocomplete',\n\t\t\t'search'\n\t\t];\n\n\t\tthis.bus = document.createElement( 'div' );\n\n\t\tthis.debug = debug;\n\n\t\tthis.stateSetFromFunction = false;\n\n\t\tthis.suggestedSearchTerm = null;\n\n\t}\n\n\tsearch() {\n\n\t\treturn new Request(\n\t\t\tthis.endpoints.search,\n\t\t\tthis.method,\n\t\t\tthis.states.search.output\n\t\t)\n\t\t.send()\n\t\t.then(( request ) => {\n\n\t\t\t// dispatch SEARCH event; pass request data\n\t\t\tthis.bus.dispatchEvent( new CustomEvent( 'search', { detail: request } ) );\n\n\t\t\tthis.afterSearch(request);\n\t\t\t\n\t\t\treturn request;\n\n\t\t});\n\n\t}\n\n\tautocomplete () {\n\n\t\treturn new Request(\n\t\t\tthis.endpoints.autocomplete,\n\t\t\tthis.method,\n\t\t\tthis.states.autocomplete.output\n\t\t)\n\t\t.send()\n\t\t.then(( request ) => {\n\n\t\t\t// Store suggested search term\n\t\t\tthis.suggestedSearchTerm = request?.response?.data?.suggested?.text;\n\n\t\t\t// dispatch AUTOCOMPLETE event; pass request data\n\t\t\tthis.bus.dispatchEvent( new CustomEvent( 'autocomplete', { detail: request } ) );\n\t\t\t\n\t\t\treturn request;\n\n\t\t});\n\n\t}\n\n\ton( event, callback ) {\n\n\t\tif ( this.events.indexOf( event ) === -1 ) {\n\t\t\tthrow new Error( `[SSAPI][Client].on - Event \"${ event }\" does not exist.` );\n\t\t}\n\n\t\tthis.bus.addEventListener( event, callback, false );\n\n\t}\n\t\n\toff( event, callback ) {\n\t\t\n\t\tif ( this.events.indexOf( event ) === -1 ) {\n\t\t\tthrow new Error( `[SSAPI][Client].off - Event \"${ event }\" does not exist.` );\n\t\t}\n\n\t\tthis.bus.removeEventListener( event, callback, false );\n\n\t}\n\n\tafterSearch (request) {\n\t\t// fix state for first response after state set from function\n\t\tif ( this.stateSetFromFunction ) {\n\n\t\t\tthis.stateSetFromFunction = false;\n\n\t\t\t// reset filters\n\t\t\tthis.states.search.filters = this.states.search.filters.filter( filter => filter.type === 'bgfilter' );\n\n\t\t\t// re-add filters to the state from the summary\n\t\t\tif ( request.response.data && request.response.data.filterSummary && request.response.data.filterSummary.length > 0 ) {\n\n\t\t\t\trequest.response.data.filterSummary.map(filter => {\n\t\t\t\t\tthis.filter( filter.field, ( typeof filter.value === 'object' ) ? [ filter.value.rangeLow, filter.value.rangeHigh ] : filter.value );\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\t}\n\n\tsetState( state ) {\n\n\t\tif ( state == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][Client].setState - `state` is undefined.' );\n\t\t}\n\n\t\tconst dynamicSetTests = [\n\t\t\t{\n\t\t\t\tpattern: /^sort\\.(.*)$/,\n\t\t\t\tfn: 'sort',\n\t\t\t\tmatch: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /^filter\\.(.*)$/,\n\t\t\t\tfn: 'filter',\n\t\t\t\tmatch: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /^bgfilter\\.(.*)$/,\n\t\t\t\tfn: 'backgroundFilter',\n\t\t\t\tmatch: 1\n\t\t\t}\n\t\t];\n\n\t\tfor ( let prop in state ) {\n\n\t\t\tlet value = state[ prop ];\n\n\t\t\tswitch( prop ) {\n\t\t\t\tcase 'q': {\n\t\t\t\t\tthis.query( value, false );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'resultsPerPage': {\n\t\t\t\t\tthis.perPage( value, false );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'page': {\n\t\t\t\t\tthis.page( value );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\n\t\t\t\t\tconst testPassed = dynamicSetTests.some(( test ) => {\n\t\t\t\t\t\tconst match = prop.match( test.pattern );\n\t\t\t\t\t\tif ( match ) {\n\n\t\t\t\t\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\t\t\t\t\tvalue.map(( filterValue ) => {\n\n\t\t\t\t\t\t\t\t\tif ( filterValue != undefined ) {\n\n\t\t\t\t\t\t\t\t\t\tthis[ test.fn ]( match[ test.match ], filterValue, false );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\t\tif ( value != undefined ) {\n\n\t\t\t\t\t\t\t\t\tthis[ test.fn ]( match[ test.match ], value, false );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif ( !testPassed ) {\n\n\t\t\t\t\t\tthis.other( prop, value );\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tthis.stateSetFromFunction = true;\n\n\t\treturn this;\n\n\t}\n\n\tother( key, value ) {\n\n\t\tthis.states.search.other( key, value );\n\n\t\treturn this;\n\n\t}\n\n\treset() {\n\n\t\tthis.states.search.reset();\n\n\t\treturn this;\n\n\t}\n\n\tlock() {\n\n\t\tthis.states.search.lock();\n\n\t\treturn this;\n\t\t\n\t}\n\n\tclearFacets( resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.clearFacets();\n\n\t\treturn this;\n\n\t}\n\n\tclearFilters( resetPage ) {\n\n\t\tthis.clearFacets( resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tperPage( n, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.perPage( n );\n\n\t\treturn this;\n\n\t}\n\n\tpage( n ) {\n\n\t\tthis.states.search.page( n );\n\n\t\treturn this;\n\n\t}\n\n\tsort( field, direction ) {\n\n\t\tif ( this.debug ) console.trace( `[SSAPI][Client].sort - field: ${ field } | direction: ${ direction }` );\n\n\t\tthis.states.search.sort( field, direction );\n\n\t\treturn this;\n\n\t}\n\n\tfilter( field, value, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.toggleFilter( field, value, false );\n\n\t\treturn this;\n\n\t}\n\n\tfacet( field, value, resetPage ) {\n\n\t\tthis.filter( field, value, resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tbackgroundFilter( field, value, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.toggleFilter( field, value, true );\n\n\t\treturn this;\n\n\t}\n\n\tbackgroundFacet( field, value, resetPage ) {\n\n\t\tthis.backgroundFilter( field, value, resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tquery( q, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.query( q );\n\t\tthis.states.autocomplete.query( q );\n\n\t\treturn this;\n\t}\n\n};\n\nexport {\n\tClient\n};\n","import {Client} from './SSAPI/Client.js'\n\n// static methods\nconst createPages = ( pagination ) => {\n\tconst pages = [];\n\tfor( let i = 1; i <= pagination.totalPages; i++ ) {\n\t\tpages.push( i );\n\t}\n\treturn pages;\n};\n\nexport {\n\tClient,\n\tcreatePages\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://SSAPI/webpack/universalModuleDefinition","webpack://SSAPI/webpack/bootstrap","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/utils.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/formats.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/index.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/stringify.js","webpack://SSAPI/./node_modules/.pnpm/qs@6.9.4/node_modules/qs/lib/parse.js","webpack://SSAPI/./node_modules/.pnpm/custom-event-polyfill@1.0.7/node_modules/custom-event-polyfill/polyfill.js","webpack://SSAPI/./src/SSAPI/SearchState.js","webpack://SSAPI/./src/SSAPI/AutocompleteState.js","webpack://SSAPI/./src/SSAPI/Request.js","webpack://SSAPI/./src/SSAPI/RequestCache.js","webpack://SSAPI/./src/SSAPI/Client.js","webpack://SSAPI/./src/index.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","has","isArray","Array","hexTable","array","push","toString","toUpperCase","arrayToObject","source","options","obj","plainObjects","length","assign","target","keys","reduce","acc","combine","a","b","concat","compact","queue","prop","refs","item","j","val","indexOf","pop","compacted","compactQueue","decode","str","decoder","charset","strWithoutPlus","replace","unescape","decodeURIComponent","e","encode","defaultEncoder","string","String","escape","$0","parseInt","slice","out","charCodeAt","charAt","isBuffer","constructor","isRegExp","maybeMap","fn","mapped","merge","allowPrototypes","mergeTarget","forEach","targetItem","percentTwenties","util","Format","RFC1738","RFC3986","formatters","stringify","parse","formats","utils","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","arr","valueOrArray","apply","toISO","Date","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","encodeValuesOnly","format","formatter","serializeDate","date","skipNulls","strictNullHandling","generateArrayPrefix","filter","sort","v","join","objKeys","values","keyPrefix","opts","undefined","TypeError","normalizeStringifyOptions","arrayFormat","joined","arrayLimit","depth","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","split","parseKeys","givenKey","valuesParsed","child","segment","exec","parent","index","chain","leaf","cleanRoot","isNaN","0","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","Infinity","parts","skipIndex","part","bracketEqualsPos","pos","encodedVal","parseValues","newObj","window","ce","CustomEvent","cancelable","preventDefault","defaultPrevented","Error","event","params","evt","origPrevent","bubbles","document","createEvent","initCustomEvent","detail","Event","DEFAULT_PARAMS","resultsFormat","SearchState","siteId","passedDefaultParams","debug","defaultParams","filters","sorting","lockedState","_compareFilterRanges","range1","range2","_compareFilterValues","value1","value2","arrayCheck1","arrayCheck2","_outputFilters","output","keyRoot","type","field","lowKey","highKey","_outputSort","direction","_transformFilterType","backgroundFilter","addFilter","removeFilter","toggleFilter","find","query","q","perPage","resultsPerPage","page","lock","reset","clearFacets","other","disableSpellCorrect","AutocompleteState","pubId","cache","throttleTime","store","Map","access","record","now","timestamp","remove","data","insert","set","purge","clear","delete","Request","endpoint","method","serializeParams","qs","buildUrl","send","Promise","resolve","reject","queryString","url","cacheResponse","xhr","XMLHttpRequest","open","responseType","onreadystatechange","readyState","status","returnObject","response","responseURL","JSON","requestParams","requestQueryString","console","error","Client","defaultSearchParams","defaultAutocompleteParams","states","autocomplete","search","endpoints","events","bus","createElement","stateSetFromFunction","suggestedQuery","then","request","dispatchEvent","afterSearch","suggested","text","on","callback","addEventListener","off","removeEventListener","filterSummary","map","rangeLow","rangeHigh","setState","state","dynamicSetTests","pattern","match","some","test","filterValue","resetPage","clearFilters","trace","facet","backgroundFacet","createPages","pagination","pages","totalPages"],"mappings":"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","file":"ssapi-wrapper.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SSAPI\"] = factory();\n\telse\n\t\troot[\"SSAPI\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n }).join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj; // eslint-disable-line no-param-reassign\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","const DEFAULT_PARAMS = {\n\tresultsFormat: 'native'\n};\n\nclass SearchState {\n\n\tconstructor( siteId, passedDefaultParams = {}, debug = false ) {\n\n\t\tthis.siteId = siteId;\n\t\tthis.defaultParams = { siteId: this.siteId, ...DEFAULT_PARAMS, ...passedDefaultParams };\n\t\tthis.params = { ...this.defaultParams };\n\t\tthis.filters = [];\n\t\tthis.sorting = {};\n\t\tthis.debug = debug;\n\t\tthis.lockedState = {};\n\n\t}\n\n\t_compareFilterRanges( range1, range2 ) {\n\t\treturn ( range1[ 0 ] == range2[ 0 ] && range1[ 1 ] == range2[ 1 ] );\n\t}\n\n\t_compareFilterValues( value1, value2 ) {\n\n\t\tconst arrayCheck1 = Array.isArray( value1 );\n\t\tconst arrayCheck2 = Array.isArray( value2 );\n\n\t\tif ( arrayCheck1 && arrayCheck2 ) {\n\t\t\treturn this._compareFilterRanges( value1, value2 );\n\t\t}\n\t\telse if ( arrayCheck1 || arrayCheck2 ) {\n\t\t\treturn false;\n\t\t}\n\t\telse {\n\t\t\treturn ( value1 == value2 );\n\t\t}\n\n\t}\n\n\t_outputFilters() {\n\n\t\treturn this.filters.reduce(( output, filter ) => {\n\n\t\t\tlet keyRoot = `${ filter.type }.${ filter.field }`;\n\n\t\t\tif ( Array.isArray( filter.value ) ) {\n\n\t\t\t\tlet lowKey = `${ keyRoot }.low`;\n\t\t\t\tlet highKey = `${ keyRoot }.high`;\n\n\t\t\t\treturn {\n\t\t\t\t\t...output,\n\t\t\t\t\t...(filter.value[0] != undefined && { [ lowKey ]: ( Array.isArray( output[ lowKey ] ) ? output[ lowKey ].concat( [ filter.value[0] ] ) : [ filter.value[0] ] ) }),\n\t\t\t\t\t...(filter.value[1] != undefined && { [ highKey ]: ( Array.isArray( output[ highKey ] ) ? output[ highKey ].concat( [ filter.value[1] ] ) : [ filter.value[1] ] ) })\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\toutput[ keyRoot ] = output[ keyRoot ] || [];\n\t\t\t\toutput[ keyRoot ].push( filter.value );\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t}, {});\n\n\t}\n\n\t_outputSort() {\n\n\t\tif ( this.sorting.field && this.sorting.direction ) {\n\n\t\t\treturn { [ `sort.${ this.sorting.field }` ]: this.sorting.direction };\n\n\t\t}\n\n\t\treturn;\n\n\t}\n\n\t_transformFilterType( backgroundFilter ) {\n\t\treturn ( backgroundFilter ) ?\n\t\t\t'bgfilter' :\n\t\t\t'filter';\n\t}\n\n\taddFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].addFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].addFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst filter = {\n\t\t\tfield: field,\n\t\t\tvalue: value,\n\t\t\ttype: this._transformFilterType( backgroundFilter )\n\t\t};\n\n\t\tthis.filters.push( filter );\n\n\t\treturn this;\n\n\t}\n\n\tremoveFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].removeFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].removeFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst type = this._transformFilterType( backgroundFilter );\n\n\t\tthis.filters = this.filters.filter(( filter ) => {\n\t\t\treturn !(\n\t\t\t\tfilter.field == field &&\n\t\t\t\tfilter.type == type &&\n\t\t\t\tthis._compareFilterValues( filter.value, value )\n\t\t\t);\n\t\t});\n\n\t\treturn this;\n\n\t}\n\n\ttoggleFilter( field, value, backgroundFilter = false ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].toggleFilter - `field` is undefined.' );\n\t\t}\n\t\tif ( value == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].toggleFilter - `value` is undefined.' );\n\t\t}\n\n\t\tconst type = this._transformFilterType( backgroundFilter );\n\n\t\tconst foundFilter = this.filters.find(( filter ) => {\n\t\t\treturn (\n\t\t\t\tfilter.field == field &&\n\t\t\t\tfilter.type == type &&\n\t\t\t\tthis._compareFilterValues( filter.value, value )\n\t\t\t);\n\t\t});\n\n\t\tif ( foundFilter ) {\n\t\t\treturn this.removeFilter( field, value, backgroundFilter );\n\t\t}\n\t\telse {\n\t\t\treturn this.addFilter( field, value, backgroundFilter );\n\t\t}\n\n\t}\n\n\tquery( q ) {\n\n\t\tthis.params.q = q;\n\n\t\treturn this;\n\n\t}\n\n\tperPage( n ) {\n\n\t\tthis.params.resultsPerPage = n;\n\n\t\treturn this;\n\n\t}\n\n\tpage( n ) {\n\n\t\tthis.params.page = n;\n\n\t\treturn this;\n\n\t}\n\n\tsort( field, direction = 'asc' ) {\n\n\t\tif ( field == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][State].sort - \"field\" is undefined.' );\n\t\t}\n\n\t\tthis.sorting = { field: field, direction: direction };\n\n\t\treturn this;\n\n\t}\n\n\tlock() {\n\n\t\tthis.lockedState = {\n\t\t\tparams: { ...this.params },\n\t\t\tfilters: [ ...this.filters ],\n\t\t\tsorting: { ...this.sorting }\n\t\t};\n\n\t\treturn this;\n\n\t};\n\n\treset() {\n\n\t\tthis.params = ( this.lockedState.params ) ? { ...this.lockedState.params } : { ...this.defaultParams };\n\t\tthis.filters = ( this.lockedState.filters ) ? [ ...this.lockedState.filters ] : [];\n\t\tthis.sorting = ( this.lockedState.sorting ) ? { ...this.lockedState.sorting } : {};\n\n\t\treturn this;\n\n\t}\n\n\tclearFacets() {\n\n\t\tthis.filters = this.filters.filter(( filter ) => {\n\t\t\treturn !( filter.type == 'filter' );\n\t\t});\n\n\t\treturn this;\n\n\t};\n\n\tother( key, value ) {\n\n\t\tthis.params[ key ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tget output() {\n\n\t\treturn {\n\t\t\t...this.params,\n\t\t\t...this._outputFilters(),\n\t\t\t...this._outputSort()\n\t\t};\n\n\t}\n\n};\n\nexport {\n\tSearchState\n};\n","const DEFAULT_PARAMS = {\n\tdisableSpellCorrect: true,\n\tlimit: 4\n};\n\nclass AutocompleteState {\n\n\tconstructor( pubId, passedDefaultParams = {}, debug = false ) {\n\t\tthis.pubId = pubId;\n\t\tthis.defaultParams = { pubId: this.pubId, ...DEFAULT_PARAMS, ...passedDefaultParams };\n\t\tthis.params = { ...this.defaultParams };\n\t\tthis.debug = debug;\n\t}\n\n\tquery( query ) {\n\t\tthis.params.query = query;\n\t\treturn this;\n\t}\n\n\tget output() {\n\n\t\treturn {\n\t\t\t...this.params\n\t\t};\n\n\t}\n\n};\n\nexport {\n\tAutocompleteState\n};\n","import qs from 'qs'\nimport {RequestCache} from './RequestCache'\n\nconst DONE = 4;\nconst OK = 200;\n\nconst cache = new RequestCache( 30000 );\n\nclass Request {\n\n\tconstructor( endpoint, method, params ) {\n\t\tthis.endpoint = endpoint;\n\t\tthis.method = method;\n\t\tthis.params = params;\n\t}\n\n\tserializeParams( params ) {\n\t\treturn qs.stringify( params, { arrayFormat: 'repeat' } )\n\t}\n\n\tbuildUrl( endpoint, params ) {\n\t\tif ( endpoint.indexOf( '?' ) > -1 ) {\n\t\t\treturn `${ endpoint }${ params }`;\n\t\t}\n\t\telse {\n\t\t\treturn `${ endpoint }?${ params }`;\n\t\t}\n\t}\n\n\tsend() {\n\n\t\treturn new Promise(( resolve, reject ) => {\n\n\t\t\tconst queryString = this.serializeParams( { ...this.params } );\n\t\t\tconst url = this.buildUrl( this.endpoint, queryString );\n\n\t\t\tconst cacheResponse = cache.access( url );\n\t\t\tif ( cacheResponse != undefined ) {\n\t\t\t\treturn resolve( cacheResponse );\n\t\t\t}\n\n\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\txhr.open( 'GET', url );\n\t\t\txhr.responseType = 'json';\n\t\t\txhr.send();\n\n\t\t\txhr.onreadystatechange = () => {\n\n\t\t\t\tif ( xhr.readyState == DONE ) {\n\n\t\t\t\t\tif ( xhr.status == OK ) {\n\n\t\t\t\t\t\tconst returnObject = {\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatus: xhr.status,\n\t\t\t\t\t\t\t\tresponseURL: xhr.responseURL,\n\t\t\t\t\t\t\t\tresponseType: xhr.responseType,\n\t\t\t\t\t\t\t\tdata: ( typeof xhr.response == 'object' ) ? xhr.response : JSON.parse( xhr.response )\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequestParams: { ...this.params },\n\t\t\t\t\t\t\trequestQueryString: queryString\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcache.insert( url, returnObject );\n\n\t\t\t\t\t\tresolve( returnObject );\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\n\t\t\t\t\t\tconsole.error( `[SSAPI][Request].send - Error with response.`, `Code: ${ xhr.status }.` );\n\n\t\t\t\t\t\treject( xhr );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t});\n\n\t}\n\n};\n\nexport {\n\tRequest\n};\n","class RequestCache {\n\n\tconstructor( throttleTime = 1000 ) {\n\n\t\tthis.store = new Map();\n\t\tthis.throttleTime = throttleTime;\n\n\t}\n\n\taccess( key ) {\n\n\t\tconst record = this.store.get( key );\n\n\t\tif ( record ) {\n\n\t\t\tconst now = Date.now();\n\t\t\t\n\t\t\tif ( record.timestamp - now > this.throttleTime ) {\n\t\t\t\treturn this.remove( key );\n\t\t\t}\n\n\t\t\treturn record.data;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tinsert( key, value ) {\n\n\t\tconst record = {\n\t\t\ttimestamp: Date.now(),\n\t\t\tdata: value\n\t\t};\n\n\t\tthis.store.set( key, record );\n\n\t\treturn true;\n\n\t}\n\n\tpurge() {\n\n\t\tthis.store.clear();\n\n\t\treturn true;\n\n\t}\n\n\tremove( key ) {\n\n\t\treturn this.store.delete( key );\n\n\t}\n\n};\n\nexport {\n\tRequestCache\n};\n","import {SearchState} from './SearchState'\nimport {AutocompleteState} from './AutocompleteState';\nimport {Request} from './Request'\nimport 'custom-event-polyfill'\n\nclass Client {\n\n\tconstructor( siteId, defaultSearchParams = {}, defaultAutocompleteParams = {}, debug = false ) {\n\n\t\tif ( siteId == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][Client].constructor - `siteId` is undefined.' );\n\t\t}\n\n\t\tthis.states = {\n\t\t\tautocomplete: new AutocompleteState( siteId, defaultAutocompleteParams, debug ),\n\t\t\tsearch: new SearchState( siteId, defaultSearchParams, debug )\n\t\t}\n\n\t\tthis.endpoints = {\n\t\t\tautocomplete: `https://${siteId}.a.searchspring.io/api/suggest/query`,\n\t\t\tsearch: `https://${siteId}.a.searchspring.io/api/search/search.json`\n\t\t}\n\n\t\tthis.method = 'GET';\n\n\t\tthis.events = [\n\t\t\t'autocomplete',\n\t\t\t'search'\n\t\t];\n\n\t\tthis.bus = document.createElement( 'div' );\n\n\t\tthis.debug = debug;\n\n\t\tthis.stateSetFromFunction = false;\n\n\t\tthis.suggestedQuery = null;\n\n\t}\n\n\tsearch() {\n\n\t\treturn new Request(\n\t\t\tthis.endpoints.search,\n\t\t\tthis.method,\n\t\t\tthis.states.search.output\n\t\t)\n\t\t.send()\n\t\t.then(( request ) => {\n\n\t\t\t// dispatch SEARCH event; pass request data\n\t\t\tthis.bus.dispatchEvent( new CustomEvent( 'search', { detail: request } ) );\n\n\t\t\tthis.afterSearch(request);\n\t\t\t\n\t\t\treturn request;\n\n\t\t});\n\n\t}\n\n\tautocomplete () {\n\n\t\treturn new Request(\n\t\t\tthis.endpoints.autocomplete,\n\t\t\tthis.method,\n\t\t\tthis.states.autocomplete.output\n\t\t)\n\t\t.send()\n\t\t.then(( request ) => {\n\n\t\t\t// Store suggested query from autocomplete response\n\t\t\tthis.suggestedQuery = request?.response?.data?.suggested?.text;\n\n\t\t\t// dispatch AUTOCOMPLETE event; pass request data\n\t\t\tthis.bus.dispatchEvent( new CustomEvent( 'autocomplete', { detail: request } ) );\n\t\t\t\n\t\t\treturn request;\n\n\t\t});\n\n\t}\n\n\ton( event, callback ) {\n\n\t\tif ( this.events.indexOf( event ) === -1 ) {\n\t\t\tthrow new Error( `[SSAPI][Client].on - Event \"${ event }\" does not exist.` );\n\t\t}\n\n\t\tthis.bus.addEventListener( event, callback, false );\n\n\t}\n\t\n\toff( event, callback ) {\n\t\t\n\t\tif ( this.events.indexOf( event ) === -1 ) {\n\t\t\tthrow new Error( `[SSAPI][Client].off - Event \"${ event }\" does not exist.` );\n\t\t}\n\n\t\tthis.bus.removeEventListener( event, callback, false );\n\n\t}\n\n\tafterSearch (request) {\n\t\t// fix state for first response after state set from function\n\t\tif ( this.stateSetFromFunction ) {\n\n\t\t\tthis.stateSetFromFunction = false;\n\n\t\t\t// reset filters\n\t\t\tthis.states.search.filters = this.states.search.filters.filter( filter => filter.type === 'bgfilter' );\n\n\t\t\t// re-add filters to the state from the summary\n\t\t\tif ( request.response.data && request.response.data.filterSummary && request.response.data.filterSummary.length > 0 ) {\n\n\t\t\t\trequest.response.data.filterSummary.map(filter => {\n\t\t\t\t\tthis.filter( filter.field, ( typeof filter.value === 'object' ) ? [ filter.value.rangeLow, filter.value.rangeHigh ] : filter.value );\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\t}\n\n\tsetState( state ) {\n\n\t\tif ( state == undefined ) {\n\t\t\tthrow new TypeError( '[SSAPI][Client].setState - `state` is undefined.' );\n\t\t}\n\n\t\tconst dynamicSetTests = [\n\t\t\t{\n\t\t\t\tpattern: /^sort\\.(.*)$/,\n\t\t\t\tfn: 'sort',\n\t\t\t\tmatch: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /^filter\\.(.*)$/,\n\t\t\t\tfn: 'filter',\n\t\t\t\tmatch: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /^bgfilter\\.(.*)$/,\n\t\t\t\tfn: 'backgroundFilter',\n\t\t\t\tmatch: 1\n\t\t\t}\n\t\t];\n\n\t\tfor ( let prop in state ) {\n\n\t\t\tlet value = state[ prop ];\n\n\t\t\tswitch( prop ) {\n\t\t\t\tcase 'q': {\n\t\t\t\t\tthis.query( value, false );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'resultsPerPage': {\n\t\t\t\t\tthis.perPage( value, false );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'page': {\n\t\t\t\t\tthis.page( value );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\n\t\t\t\t\tconst testPassed = dynamicSetTests.some(( test ) => {\n\t\t\t\t\t\tconst match = prop.match( test.pattern );\n\t\t\t\t\t\tif ( match ) {\n\n\t\t\t\t\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\t\t\t\t\tvalue.map(( filterValue ) => {\n\n\t\t\t\t\t\t\t\t\tif ( filterValue != undefined ) {\n\n\t\t\t\t\t\t\t\t\t\tthis[ test.fn ]( match[ test.match ], filterValue, false );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\t\tif ( value != undefined ) {\n\n\t\t\t\t\t\t\t\t\tthis[ test.fn ]( match[ test.match ], value, false );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif ( !testPassed ) {\n\n\t\t\t\t\t\tthis.other( prop, value );\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tthis.stateSetFromFunction = true;\n\n\t\treturn this;\n\n\t}\n\n\tother( key, value ) {\n\n\t\tthis.states.search.other( key, value );\n\n\t\treturn this;\n\n\t}\n\n\treset() {\n\n\t\tthis.states.search.reset();\n\n\t\treturn this;\n\n\t}\n\n\tlock() {\n\n\t\tthis.states.search.lock();\n\n\t\treturn this;\n\t\t\n\t}\n\n\tclearFacets( resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.clearFacets();\n\n\t\treturn this;\n\n\t}\n\n\tclearFilters( resetPage ) {\n\n\t\tthis.clearFacets( resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tperPage( n, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.perPage( n );\n\n\t\treturn this;\n\n\t}\n\n\tpage( n ) {\n\n\t\tthis.states.search.page( n );\n\n\t\treturn this;\n\n\t}\n\n\tsort( field, direction ) {\n\n\t\tif ( this.debug ) console.trace( `[SSAPI][Client].sort - field: ${ field } | direction: ${ direction }` );\n\n\t\tthis.states.search.sort( field, direction );\n\n\t\treturn this;\n\n\t}\n\n\tfilter( field, value, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.toggleFilter( field, value, false );\n\n\t\treturn this;\n\n\t}\n\n\tfacet( field, value, resetPage ) {\n\n\t\tthis.filter( field, value, resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tbackgroundFilter( field, value, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.toggleFilter( field, value, true );\n\n\t\treturn this;\n\n\t}\n\n\tbackgroundFacet( field, value, resetPage ) {\n\n\t\tthis.backgroundFilter( field, value, resetPage );\n\n\t\treturn this;\n\n\t}\n\n\tquery( q, resetPage = true ) {\n\n\t\tif ( resetPage ) {\n\t\t\tthis.states.search.page( 1 );\n\t\t}\n\n\t\tthis.states.search.query( q );\n\t\tthis.states.autocomplete.query( q );\n\n\t\treturn this;\n\t}\n\n};\n\nexport {\n\tClient\n};\n","import {Client} from './SSAPI/Client.js'\n\n// static methods\nconst createPages = ( pagination ) => {\n\tconst pages = [];\n\tfor( let i = 1; i <= pagination.totalPages; i++ ) {\n\t\tpages.push( i );\n\t}\n\treturn pages;\n};\n\nexport {\n\tClient,\n\tcreatePages\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 524c751..d8664d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ssapi-wrapper", - "version": "2.1.0", + "version": "2.1.1", "description": "Just a SearchSpring API Wrapper for JavaScript client-side or NodeJS applications...", "main": "./dist/ssapi-wrapper.js", "scripts": {