UNPKG

data-synchronizer

Version:

A versatile library for transferring data across multi-page applications or single page applications.

2 lines (1 loc) 10.1 kB
import"core-js/modules/es.object.set-prototype-of.js";import"core-js/modules/es.object.assign.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.symbol.description.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.symbol.iterator.js";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.function.name.js";import"core-js/modules/es.regexp.to-string.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.entries.js";import"core-js/modules/es.object.keys.js";import"core-js/modules/es.string.starts-with.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.from.js";import"core-js/modules/es.set.js";import"core-js/modules/es.map.js";import"core-js/modules/es.array.slice.js";import"core-js/modules/es.regexp.constructor.js";import"core-js/modules/es.regexp.exec.js";import"core-js/modules/es.string.replace.js";import"core-js/modules/es.string.match.js";import"core-js/modules/es.array.includes.js";import"core-js/modules/es.string.includes.js";import"core-js/modules/es.array.find.js";var n=function(t,r){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])},n(t,r)};function t(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function e(){this.constructor=t}n(t,r),t.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var r=function(){return r=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o]);return n},r.apply(this,arguments)};function e(n,t){var r="function"==typeof Symbol&&n[Symbol.iterator];if(!r)return n;var e,o,s=r.call(n),i=[];try{for(;(void 0===t||t-- >0)&&!(e=s.next()).done;)i.push(e.value)}catch(n){o={error:n}}finally{try{e&&!e.done&&(r=s.return)&&r.call(s)}finally{if(o)throw o.error}}return i}"function"==typeof SuppressedError&&SuppressedError;var o="string",s="boolean",i="number",c="symbol",a="bigint",u="object",f=[u,function(n){var t="string"==typeof n?JSON.parse(n):n,r={};return Object.entries(t).forEach((function(n){var t=e(n,2),o=t[0],s=e(t[1],2),i=s[0],c=s[1];r[o]=E[i].from(c)})),r},function(n){var t={};return Object.entries(n).forEach((function(n){var r=e(n,2),o=r[0],s=r[1];t[o]=$(s)})),[u,t]}],l="null",p="function",g="array",d=[g,function(n){var t="string"==typeof n?JSON.parse(n):n,r=[];return t.forEach((function(n,t){var o=e(n,2),s=o[0],i=o[1];r[t]=E[s].from(i)})),r},function(n){var t=[];return n.forEach((function(n,r){t[r]=$(n)})),[g,t]}],y=["set",function(n){var t="string"==typeof n?JSON.parse(n):n,r=new Set;return t.forEach((function(n){var t=e(n,2),o=t[0],s=t[1],i=E[o].from(s);r.add(i)})),r},function(n){return["set",Array.from(n).map((function(n){return $(n)}))]}],m=["map",function(n){var t="string"==typeof n?JSON.parse(n):n,r=new Map;return t.forEach((function(n){var t=e(n,2),o=t[0],s=t[1],i=e(o,2),c=i[0],a=i[1],u=e(s,2),f=u[0],l=u[1];o=E[c].from(a),s=E[f].from(l),r.set(o,s)})),r},function(n){var t,r,o=n.entries(),s=[];try{for(var i=function(n){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&n[t],e=0;if(r)return r.call(n);if(n&&"number"==typeof n.length)return{next:function(){return n&&e>=n.length&&(n=void 0),{value:n&&n[e++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(o),c=i.next();!c.done;c=i.next()){var a=e(c.value,2),u=a[0],f=a[1],l=$(u),p=$(f);s.push([l,p])}}catch(n){t={error:n}}finally{try{c&&!c.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return["map",s]}],h="date",j="regexp",v="undefined",w="arrowFunction",b="asyncfunction",S="generatorfunction",E=[[o,function(n){return n},function(n){return[o,n]}],[s,function(n){return n},function(n){return[s,n]}],[i,function(n){return+n},function(n){return[i,n.toString()]}],[c,function(n){return Symbol.for(n)},function(n){return[c,n.description]}],[a,function(n){return BigInt(n)},function(n){return[a,n.toString()]}],f,[l,function(){return null},function(n){return[l,""+n]}],[p,function(n){var t=n.startsWith("function")?n:"function "+n;return new Function("return ".concat(t))()},function(n){return[p,n.toString()]}],d,y,m,[h,function(n){return new Date(+n)},function(n){return[h,""+n.getTime()]}],[j,function(n){var t=n.slice(1,n.lastIndexOf("/")),r=n.slice(n.lastIndexOf("/")+1);return new RegExp(t,r)},function(n){return[j,n.toString()]}],[v,function(){},function(){return[v,"undefined"]}],[w,function(n){return new Function("return ".concat(n))()},function(n){return[w,n.toString()]}],[b,function(n){return new Function("return ".concat(n))()},function(n){var t=n.toString();return t.startsWith("async function")||(t=t.replace("async","async function")),[b,t]}],[S,function(n){return new Function("return ".concat(n))()},function(n){var t=n.toString();return t.startsWith("*")&&(t="function ".concat(t)),[S,t.toString()]}]].reduce((function(n,t){var r,o=e(t,3),s=o[0],i=o[1],c=o[2];return Object.assign(n,((r={})[s]={from:i,to:c},r)),n}),{}),O="BroadcastChannel"in window,M="localStorage"in window,x=function(n){var t=JSON.parse(n),o=t.$payload;t.$id;var s=function(n,t){var r={};for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&t.indexOf(e)<0&&(r[e]=n[e]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(e=Object.getOwnPropertySymbols(n);o<e.length;o++)t.indexOf(e[o])<0&&Object.prototype.propertyIsEnumerable.call(n,e[o])&&(r[e[o]]=n[e[o]])}return r}(t,["$payload","$id"]),i=r(r({},s),{$payload:[]}),c=e(o,2),a=c[0],u=c[1];return i.$payload=E[a].from(u),i},$=function(n){var t,r=E[(t=n,void 0===t?"undefined":null===t?"null":t instanceof Function&&function(n){var t=(null==n?void 0:n.toString())||"";return!t.match(/{[\s\S]*}/)||t.replace(/{[\s\S]*}/,"").includes("=>")}(t)?"arrowFunction":t.constructor.name.toLowerCase())];return r&&(n=r.to(n)),n},C=function(n,t){var r=$(n);return{$origin:location.href,$payload:r,$target:"string"==typeof t?t:null==t?void 0:t.source,$id:I(16)}},B=function(n,t){return!t||new RegExp(t).test(n)},I=function(n){for(var t="";t.length<n;t+=Math.random().toString(36).substr(2));return t.substr(0,n)},_=function(n){return Array.from(new Set(n))},F=new Map,J=function(n,t){"string"==typeof n&&(n=[n]),(n=_(n)).forEach((function(n){var r=new BroadcastChannel(n);r.addEventListener("message",(function(n){try{var r=x(n.data);if(!B(location.href,r.$target))return;"function"==typeof t&&t(r)}catch(n){console.error(n)}}));var e=F.get(n)||[];e.push(r),F.set(n,e)}))},N=function(n,t,r){"string"==typeof n&&(n=[n]),n=_(n);var e=C(t,r);n.forEach((function(n){var t=new BroadcastChannel(n);t.postMessage(JSON.stringify(e));var r=F.get(n)||[];r.push(t),F.set(n,r)}))},L=function(n,t){"string"==typeof n&&(n=[n]),(n=_(n)).forEach((function(n){var r=new BroadcastChannel(n);r.addEventListener("messageerror",(function(n){"function"==typeof t&&t(n)}));var e=F.get(n)||[];e.push(r),F.set(n,e)}))},P=function(n){"string"==typeof n&&(n=[n]),(n=_(n)).forEach((function(t){var r=F.get(t)||[];if(!r.length)throw new Error("the channel named ".concat(n," isn't exist"));r.forEach((function(n){n.close()})),F.delete(t)}))},T=new Map,k=function(n,t){"string"==typeof n&&(n=[n]),n=_(n),window.addEventListener("storage",(function(r){var e=r.key;if(n.includes(e))try{var o=x(r.newValue);if(!B(location.href,o.$target))return;t(o)}catch(n){console.error(n)}}))},A=function(n,t,r){"string"==typeof n&&(n=[n]),n=_(n);var e=C(t,r),o=JSON.stringify(e);n.forEach((function(n){try{window.localStorage.setItem(n,o);var t=new StorageEvent("storage",{key:n,newValue:o});window.dispatchEvent(t)}catch(t){(T.get(n)||[]).forEach((function(n){n(t)}))}}))},W=function(n,t){"string"==typeof n&&(n=[n]),(n=_(n)).forEach((function(n){var r=T.get(n);r?r.push(t):r=[t],T.set(n,r)}))},R=function(n){var t=localStorage.setItem;"string"==typeof n&&(n=[n]),n=_(n),localStorage.setItem=function(r,e){n.includes(r)||t(r,e)};var r=localStorage.getItem;localStorage.getItem=function(t){if(!n.includes(t))return r(t)}},V=function(){},D=function(n){function r(){return null!==n&&n.apply(this,arguments)||this}return t(r,n),r.prototype.onMessage=function(n,t){k(n,t)},r.prototype.onSendMessageError=function(n,t){W(n,t)},r.prototype.sendMessage=function(n,t,r){A(n,t,r)},r.prototype.close=function(n){R(n)},r}(V),q=function(n){function r(){return null!==n&&n.apply(this,arguments)||this}return t(r,n),r.prototype.onMessage=function(n,t){J(n,t)},r.prototype.sendMessage=function(n,t,r){N(n,t,r)},r.prototype.onSendMessageError=function(n,t){L(n,t)},r.prototype.close=function(n){P(n)},r}(V),z=O||M,G=function(){function n(n){if(this.options={engine:"BroadcastChannel"},!z)throw new Error("The library doesn't support your browser.");Object.assign(this.options,n),this.initEngine()}return n.prototype.initEngine=function(){var n=this.options.engine,t={BroadcastChannel:q,LocalStorage:D};this.instance=new t[n](this.options)},n.prototype.onMessage=function(n,t){this.instance.onMessage(n,t)},n.prototype.sendMessage=function(n,t,r){this.instance.sendMessage(n,t,r)},n.prototype.onMessageError=function(n,t){this.instance.onSendMessageError(n,t)},n.prototype.close=function(n){this.instance.close(n)},n}(),H=O||M,K=function(n){if(!H)throw new Error("the lib isn't support your browser.");n=Object.assign({engine:"BroadcastChannel"},n);var t=[{engine:"BroadcastChannel",support:O,onMessage:J,sendMessage:N,onSendMessageError:L,close:P},{engine:"LocalStorage",support:M,onMessage:k,sendMessage:A,onSendMessageError:W,close:R}].find((function(t){return t.engine===n.engine&&t.support}));return{onMessage:function(n,r){return t.onMessage(n,r)},sendMessage:function(n,r,e){return t.sendMessage(n,r,e)},onMessageError:function(n,r){return t.onSendMessageError(n,r)},close:function(n){return t.close(n)}}};export{G as DataSynchronizer,K as useDataSynchronizer};