UNPKG

@airgrid/edgekit

Version:

A privacy focused library for cookie-less audience creation.

3 lines (2 loc) 7.78 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).edkt={})}(this,function(e){function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var n,r,i=function(){return Math.round(Date.now()/1e3)},u=function(e,t){try{var n=JSON.stringify(t);localStorage.setItem(e,n)}catch(e){}},o=function(e){var t=localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return}};(n=e.QueryFilterComparisonType||(e.QueryFilterComparisonType={})).COSINE_SIMILARITY="cosineSimilarity",n.LOGISTIC_REGRESSION="logisticRegression",(r=e.StorageKeys||(e.StorageKeys={})).PAGE_VIEWS="edkt_page_views",r.MATCHED_AUDIENCES="edkt_matched_audiences",r.MATCHED_AUDIENCE_IDS="edkt_matched_audience_ids",r.CACHED_AUDIENCES="edkt_cached_audiences",r.CACHED_AUDIENCE_META_DATA="edkt_cached_audience_meta_data";var c=new(function(){function n(){this.pageViews=[],this.storageSize=300,this._load()}var r=n.prototype;return r._load=function(){this.pageViews=o(e.StorageKeys.PAGE_VIEWS)||[]},r._save=function(){u(e.StorageKeys.PAGE_VIEWS,this.pageViews)},r._trim=function(){this.pageViews.length<=this.storageSize||(this.pageViews.sort(function(e,t){return t.ts-e.ts}),this.pageViews=this.pageViews.slice(0,this.storageSize))},r.setStorageSize=function(e){!e||e<0||(this.storageSize=e)},r.savePageView=function(e,n){if(e&&!(Object.keys(e).length<1)){var r=t({ts:i(),features:e},n);this.pageViews.push(r),this._trim(),this._save()}},r.getCopyOfPageViews=function(){return[].concat(this.pageViews)},n}()),s=new(function(){function t(){this.matchedAudiences={},this.matchedAudienceIds=[],this.unsetDueToVersionIncAudienceIds=[],this.storeLoadedAt=i(),this._load()}var n=t.prototype;return n._save=function(){u(e.StorageKeys.MATCHED_AUDIENCES,this.matchedAudiences),u(e.StorageKeys.MATCHED_AUDIENCE_IDS,this.matchedAudienceIds)},n._hasAudienceExpired=function(e){return e<this.storeLoadedAt},n._unsetAudience=function(e){delete this.matchedAudiences[e]},n._updatePageViewFlag=function(e,t){this.matchedAudiences[e].matchedOnCurrentPageView=t},n._load=function(){var t=this,n=o(e.StorageKeys.MATCHED_AUDIENCES)||{};Array.isArray(n)&&(function(e){try{localStorage.removeItem(e)}catch(e){}}(e.StorageKeys.MATCHED_AUDIENCES),n=n.reduce(function(e,t){e[t.id]=t},{})),this.matchedAudiences=n,Object.entries(n).forEach(function(e){var n=e[0];t._hasAudienceExpired(e[1].expiresAt)?t._unsetAudience(n):t._updatePageViewFlag(n,!1)}),this.matchedAudienceIds=Object.keys(this.matchedAudiences),this._save()},n.unsetAudiencesIfVersionIncremented=function(e){var t=this;e.forEach(function(e){var n=t.matchedAudiences[e.id]?t.matchedAudiences[e.id].version:null;n&&n<e.version&&(t._unsetAudience(e.id),t.unsetDueToVersionIncAudienceIds.push(e.id))})},n.isMatched=function(e,t){return!!(this.matchedAudiences[e]&&this.matchedAudiences[e].version>=t)},n.setAudiences=function(e){var t=this;e.forEach(function(e){t.matchedAudiences[e.id]=e,t.unsetDueToVersionIncAudienceIds.includes(e.id)&&t._updatePageViewFlag(e.id,!1)}),this.matchedAudienceIds=Object.keys(this.matchedAudiences),this._save()},n.getMatchedAudiences=function(){return Object.entries(this.matchedAudiences).map(function(e){return e[1]})},t}()),a={__proto__:null,count:function(){return function(e){return e.length}}},d={__proto__:null,eq:function(e){return function(t){return e===t}},gt:function(e){return function(t){return t>e}},lt:function(e){return function(t){return t<e}},ge:function(e){return function(t){return t>=e}},le:function(e){return function(t){return t<=e}}},f=function(e){return Math.sqrt(e.reduce(function(e,t){return e+Math.pow(t,2)},0))},h=function(e,t){return e.reduce(function(e,n,r){return e+n*t[r]},0)},l=function(e){return e instanceof Array&&e.every(function(e){return"number"==typeof e})},v=function(t,n){return function(t){return t.queryFilterComparisonType===e.QueryFilterComparisonType.COSINE_SIMILARITY&&l((n=t.queryValue).vector)&&"number"==typeof n.threshold;var n}(t)&&l(n.value)&&function(e,t){return t.length===e.vector.length&&((i=(h(n=t,r=e.vector)/(f(n)*f(r))- -.5)/1.4)>=1?1:i<=0?0:i)>e.threshold;var n,r,i}(t.queryValue,n.value)},m=function(t,n){return function(t){return t.queryFilterComparisonType===e.QueryFilterComparisonType.LOGISTIC_REGRESSION&&l((n=t.queryValue).vector)&&"number"==typeof n.threshold&&"number"==typeof n.bias;var n}(t)&&l(n.value)&&function(e,t){return t.length===e.vector.length&&(n=h(e.vector,t)+e.bias,1/(1+Math.exp(-n))>e.threshold);var n}(t.queryValue,n.value)},g=function(e,t){var n=t.vendor;return!!n&&e.length>0&&e.every(function(e){return!!n.consents[e]})},_=function(e){return new Promise(function(t){e.listenerId&&window.__tcfapi("removeEventListener",2,function(e){return t(e)},e.listenerId)})},p=function(){return Promise.race([new Promise(function(e){var t=null;t=window.setInterval(function(){window.__tcfapi&&(t&&window.clearInterval(t),e(!0))},100)}),new Promise(function(e,t){setTimeout(function(){return t(new Error("TCF API is missing"))},1e4)})])},A=function(e){void 0===e&&(e=[]);try{return Promise.resolve(p()).then(function(){return new Promise(function(t,n){window.__tcfapi?window.__tcfapi("addEventListener",2,function(n,r){!r||"loaded"!==n.cmpStatus||"tcloaded"!==n.eventStatus&&"useractioncomplete"!==n.eventStatus||(t(g(e,n)),_(n))}):n(new Error("TCF API is missing"))})})}catch(e){return Promise.reject(e)}},y={run:function(e){try{var t,n=function(e){if(t)return e;c.setStorageSize(l),c.savePageView(u,o);var n=c.getCopyOfPageViews();s.unsetAudiencesIfVersionIncremented(h);var r=function(e,t){var n=i();return e.reduce(function(e,r){var i;return function(e,t){try{var n=e.filter,r=e.rules;if(0===t.length||0===n.queries.length)return!1;var i=t.filter(function(e){return n.queries.some(function(t){return function(e,t){return!(!t||!function(e,t){return t.version===e.featureVersion}(e,t))&&[v,m].some(function(n){return n(e,t)})}(t,e.features[t.queryProperty])})});return r.every(function(e){var t=a[e.reducer.name]()(i);return d[e.matcher.name](e.matcher.args)(t)})}catch(e){return!1}}({filter:{any:!1,queries:(i=r).definition},rules:[{reducer:{name:"count"},matcher:{name:"gt",args:i.occurrences}}]},t.filter(function(e){return 0===r.lookBack||e.ts>n-r.lookBack}))?[].concat(e,[{id:r.id,version:r.version,matchedAt:n,expiresAt:n+r.ttl,matchedOnCurrentPageView:!0}]):e},[])}(h.filter(function(e){return!s.isMatched(e.id,e.version)}),n);s.setAudiences(r)},r=e.vendorIds,u=e.pageFeatures,o=e.pageMetadata,f=e.omitGdprConsent,h=e.audienceDefinitions,l=e.featureStorageSize,g=function(){if(!f)return Promise.resolve(A(r)).then(function(e){e||(t=1)})}();return Promise.resolve(g&&g.then?g.then(n):n(g))}catch(e){return Promise.reject(e)}},getMatchedAudiences:function(){return s.getMatchedAudiences()},getCopyOfPageViews:function(){return c.getCopyOfPageViews()}};e.WAIT_FOR_TCF_API=1e4,e.checkConsentStatus=function(e){void 0===e&&(e=[]);try{return Promise.resolve(p()).then(function(){return new Promise(function(t,n){window.__tcfapi?window.__tcfapi("addEventListener",2,function(n,r){if(r&&"loaded"===n.cmpStatus){var i=g(e,n);t({eventStatus:n.eventStatus,hasConsent:i}),_(n)}}):n(new Error("TCF API is missing"))})})}catch(e){return Promise.reject(e)}},e.edkt=y,e.matchedAudienceStore=s,e.runOnConsent=function(e,t,n){void 0===n&&(n=!1);try{var r=function(){return Promise.resolve(t())},i=function(){if(!n)return Promise.resolve(A(e)).then(function(){})}();return Promise.resolve(i&&i.then?i.then(r):r())}catch(e){return Promise.reject(e)}},e.viewStore=c,e.waitForConsent=A}); //# sourceMappingURL=edgekit.min.umd.js.map