@magic-sdk/react-native-bare 30.4.0-canary.909.16508960405.0 → 30.4.1-canary.913.16657272729.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +979 -1
- package/dist/cjs/index.js.map +3 -3
- package/dist/es/index.js +964 -1
- package/dist/es/index.js.map +3 -3
- package/package.json +5 -5
package/dist/es/index.js
CHANGED
@@ -1,2 +1,965 @@
|
|
1
|
-
var De=Object.create;var $=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,Ve=Object.prototype.hasOwnProperty;var s=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Le=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Ne(r))!Ve.call(e,o)&&o!==t&&$(e,o,{get:()=>r[o],enumerable:!(n=ke(r,o))||n.enumerable});return e};var Ke=(e,r,t)=>(t=e!=null?De(je(e)):{},Le(r||!e||!e.__esModule?$(t,"default",{value:e,enumerable:!0}):t,e));var ee=s(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C._driver="localforage-driver-memory"});var re=s(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});function Ue(e,r){e=e||[],r=r||{};try{return new Blob(e,r)}catch(a){if(a.name!=="TypeError")throw a;for(var t=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,n=new t,o=0;o<e.length;o+=1)n.append(e[o]);return n.getBlob(r.type)}}O.createBlob=Ue});var ie=s(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});var Fe=re(),te=/^~~local_forage_type~([^~]+)~/,E=9,ne=E+4,oe=Object.prototype.toString;function ae(e){var r=e.length*.75,t=e.length;e[e.length-1]==="="&&(r--,e[e.length-2]==="="&&r--);for(var n=new ArrayBuffer(r),o=new Uint8Array(n),a=0,i=0;a<t;a+=4){var l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e[a]),y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e[a+1]),m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e[a+2]),_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e[a+3]);o[i++]=l<<2|y>>4,o[i++]=(y&15)<<4|m>>2,o[i++]=(m&3)<<6|_&63}return n}v.stringToBuffer=ae;function M(e){for(var r=new Uint8Array(e),t="",n=0;n<r.length;n+=3)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[n]>>2],t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(r[n]&3)<<4|r[n+1]>>4],t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(r[n+1]&15)<<2|r[n+2]>>6],t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[n+2]&63];return r.length%3===2?t=t.substring(0,t.length-1)+"=":r.length%3===1&&(t=t.substring(0,t.length-2)+"=="),t}v.bufferToString=M;function We(e,r){var t="";if(e&&(t=oe.call(e)),e&&(t==="[object ArrayBuffer]"||e.buffer&&oe.call(e.buffer)==="[object ArrayBuffer]")){var n=void 0,o="__lfsc__:";e instanceof ArrayBuffer?(n=e,o+="arbf"):(n=e.buffer,t==="[object Int8Array]"?o+="si08":t==="[object Uint8Array]"?o+="ui08":t==="[object Uint8ClampedArray]"?o+="uic8":t==="[object Int16Array]"?o+="si16":t==="[object Uint16Array]"?o+="ur16":t==="[object Int32Array]"?o+="si32":t==="[object Uint32Array]"?o+="ui32":t==="[object Float32Array]"?o+="fl32":t==="[object Float64Array]"?o+="fl64":r(new Error("Failed to get type for BinaryArray"))),r(o+M(n))}else if(t==="[object Blob]"){var a=new FileReader;a.onload=function(){var i="~~local_forage_type~"+e.type+"~"+M(this.result);r("__lfsc__:blob"+i)},a.readAsArrayBuffer(e)}else try{r(JSON.stringify(e))}catch(i){console.error("Couldn't convert value into a JSON string: ",e),r(null,i)}}v.serialize=We;function ze(e){if(e.substring(0,E)!=="__lfsc__:")return JSON.parse(e);var r=e.substring(ne),t=e.substring(E,ne),n;if(t==="blob"&&te.test(r)){var o=r.match(te);n=o[1],r=r.substring(o[0].length)}var a=ae(r);switch(t){case"arbf":return a;case"blob":return Fe.createBlob([a],{type:n});case"si08":return new Int8Array(a);case"ui08":return new Uint8Array(a);case"uic8":return new Uint8ClampedArray(a);case"si16":return new Int16Array(a);case"ur16":return new Uint16Array(a);case"si32":return new Int32Array(a);case"ui32":return new Uint32Array(a);case"fl32":return new Float32Array(a);case"fl64":return new Float64Array(a);default:throw new Error("Unkown type: "+t)}}v.deserialize=ze});var le=s(p=>{"use strict";var Ge=p&&p.__values||function(e){var r=typeof Symbol=="function"&&e[Symbol.iterator],t=0;return r?r.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(p,"__esModule",{value:!0});function se(e){var r,t;if(e===null||typeof e!="object"||"isActiveClone"in e)return e;var n=e instanceof Date?new Date(e):e.constructor();try{for(var o=Ge(Object.keys(e)),a=o.next();!a.done;a=o.next()){var i=a.value;Object.prototype.hasOwnProperty.call(e,i)&&(e.isActiveClone=null,n[i]=se(e[i]),delete e.isActiveClone)}}catch(l){r={error:l}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}return n}p.clone=se});var x=s(R=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});function Ye(e,r){return(e.name||r.name)+"/"+(e.storeName||r.storeName)+"/"}R.getKeyPrefix=Ye});var ce=s(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});function Je(e,r){r&&e.then(function(t){r(null,t)},function(t){r(t)})}B.executeCallback=Je});var T=s(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});function He(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}q.getCallback=He});var ue=s(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});var Xe=T(),Ze=x();function Qe(e,r){var t=this;if(r=Xe.getCallback.apply(this,arguments),e=typeof e!="function"&&e||{},!e.name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var o;return e.name?o=new Promise(function(a){e.storeName?a(Ze.getKeyPrefix(e,t._defaultConfig)):a(e.name+"/")}):o=Promise.reject("Invalid arguments"),{promise:o,callback:r}}D.dropInstanceCommon=Qe});var fe=s(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});function $e(e){return typeof e!="string"&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}k.normaliseKey=$e});var f=s(d=>{"use strict";Object.defineProperty(d,"__esModule",{value:!0});var h=ie(),er=le();d.clone=er.clone;var rr=x();d.getKeyPrefix=rr.getKeyPrefix;var tr=ce();d.executeCallback=tr.executeCallback;var nr=T();d.getCallback=nr.getCallback;var or=ue();d.dropInstanceCommon=or.dropInstanceCommon;var ar=fe();d.normaliseKey=ar.normaliseKey;d.serialiser={bufferToString:h.bufferToString,deserialize:h.deserialize,serialize:h.serialize,stringToBuffer:h.stringToBuffer}});var j=s(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});var b={},ir=function(){function e(r){this.kp=r,this.data={}}return e.resolve=function(r){return b[r]||(b[r]=new e(r)),b[r]},e.prototype.clear=function(){this.data={}},e.prototype.drop=function(){this.clear(),delete b[this.kp]},e.prototype.get=function(r){return this.data[r]},e.prototype.key=function(r){return this.keys()[r]},e.prototype.keys=function(){return Object.keys(this.data)},e.prototype.rm=function(r){delete this.data[r]},e.prototype.set=function(r,t){this.data[r]=t},e}();N.Store=ir});var de=s(L=>{"use strict";Object.defineProperty(L,"__esModule",{value:!0});var V=f(),sr=j();function lr(e){var r=e?V.clone(e):{},t=V.getKeyPrefix(r,this._defaultConfig),n=sr.Store.resolve(t);return this._dbInfo=r,this._dbInfo.serializer=V.serialiser,this._dbInfo.keyPrefix=t,this._dbInfo.mStore=n,Promise.resolve()}L._initStorage=lr});var me=s(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});var cr=f();function ur(e){var r=this,t=this.ready().then(function(){r._dbInfo.mStore.clear()});return cr.executeCallback(t,e),t}K.clear=ur});var ve=s(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});var ye=f(),fr=j();function dr(e,r){var t=ye.dropInstanceCommon.apply(this,arguments),n=t.promise,o=t.callback,a=n.then(function(i){fr.Store.resolve(i).drop()});return ye.executeCallback(a,o),n}U.dropInstance=dr});var pe=s(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});var _e=f();function mr(e,r){var t=this;e=_e.normaliseKey(e);var n=this.ready().then(function(){var o=t._dbInfo.mStore.get(e);return o==null?null:t._dbInfo.serializer.deserialize(o)});return _e.executeCallback(n,r),n}F.getItem=mr});var ge=s(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});var yr=f();function vr(e,r){var t=this,n=this.ready().then(function(){for(var o=t._dbInfo.mStore,a=o.keys(),i=0;i<a.length;i++){var l=o.get(a[i]);if(l&&(l=t._dbInfo.serializer.deserialize(l)),l=e(l,a[i],i+1),l!==void 0)return l}});return yr.executeCallback(n,r),n}W.iterate=vr});var he=s(z=>{"use strict";Object.defineProperty(z,"__esModule",{value:!0});var _r=f();function pr(e,r){var t=this,n=this.ready().then(function(){var o;try{o=t._dbInfo.mStore.key(e),o===void 0&&(o=null)}catch{o=null}return o});return _r.executeCallback(n,r),n}z.key=pr});var be=s(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});var gr=f();function hr(e){var r=this,t=this.ready().then(function(){return r._dbInfo.mStore.keys()});return gr.executeCallback(t,e),t}G.keys=hr});var we=s(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});var br=f();function wr(e){var r=this.keys().then(function(t){return t.length});return br.executeCallback(r,e),r}Y.length=wr});var Se=s(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});var Ie=f();function Ir(e,r){var t=this;e=Ie.normaliseKey(e);var n=this.ready().then(function(){t._dbInfo.mStore.rm(e)});return Ie.executeCallback(n,r),n}J.removeItem=Ir});var Ae=s(H=>{"use strict";Object.defineProperty(H,"__esModule",{value:!0});var Pe=f();function Sr(e,r,t){var n=this;e=Pe.normaliseKey(e);var o=this.ready().then(function(){r===void 0&&(r=null);var a=r;return new Promise(function(i,l){n._dbInfo.serializer.serialize(r,function(y,m){if(m)l(m);else try{n._dbInfo.mStore.set(e,y),i(a)}catch(_){l(_)}})})});return Pe.executeCallback(o,t),o}H.setItem=Sr});var Ce=s(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c._support=!0;var Pr=ee();c._driver=Pr._driver;var Ar=de();c._initStorage=Ar._initStorage;var Cr=me();c.clear=Cr.clear;var Or=ve();c.dropInstance=Or.dropInstance;var Er=pe();c.getItem=Er.getItem;var Mr=ge();c.iterate=Mr.iterate;var Rr=he();c.key=Rr.key;var xr=be();c.keys=xr.keys;var Br=we();c.length=Br.length;var qr=Se();c.removeItem=qr.removeItem;var Tr=Ae();c.setItem=Tr.setItem});var Q=Ke(Ce());import"regenerator-runtime/runtime";import{createSDK as Xr}from"@magic-sdk/provider";import*as Zr from"process";import Qr from"localforage";import{URL as $r,URLSearchParams as et}from"whatwg-url";import{Buffer as Z}from"buffer";import*as Be from"lodash";import{getBundleId as rt}from"react-native-device-info";import{driverWithoutSerialization as tt}from"@aveq-research/localforage-asyncstorage-driver";import Oe,{useState as Ee,useCallback as g,useMemo as jr,useEffect as w}from"react";import{Linking as Vr,StyleSheet as Lr}from"react-native";import{WebView as Kr}from"react-native-webview";import{SafeAreaView as Ur}from"react-native-safe-area-context";import{ViewController as Fr,createModalNotReadyError as Wr}from"@magic-sdk/provider";import{isTypedArray as zr}from"lodash";import I from"@react-native-async-storage/async-storage";import{EventRegister as Me}from"react-native-event-listeners";import{useEffect as Dr,useState as kr}from"react";import Nr from"@react-native-community/netinfo";var X=()=>{let[e,r]=kr(!0);return Dr(()=>{let t=n=>{r(!!n.isConnected)};return Nr.addEventListener(t)},[]),e};var Re="MAGIC_PAYLOAD_FLAG_TYPED_ARRAY",Gr="open_in_device_browser",Yr="#FFFFFF",xe="msg_posted_after_inactivity_event",S="lastMessageTime";function Jr(){return Lr.create({"magic-webview":{flex:1,backgroundColor:"transparent"},"webview-container":{flex:1,width:"100%",backgroundColor:"transparent",position:"absolute",top:0,left:0,right:0,bottom:0},show:{zIndex:1e4,elevation:1e4},hide:{zIndex:-1e4,elevation:0}})}var P=class extends Fr{webView;container;styles;init(){this.webView=null,this.container=null,this.styles=Jr()}Relayer=r=>{let[t,n]=Ee(!1),[o,a]=Ee(!0),i=X();w(()=>{this.isConnectedToInternet=i},[i]),w(()=>(I.setItem(S,""),()=>{this.isReadyForRequest=!1}),[]),w(()=>{Me.addEventListener(xe,async u=>{this.isReadyForRequest=!1,a(!1),this.post(u.msgType,u.payload),await I.setItem(S,new Date().toISOString())})},[]),w(()=>{o||setTimeout(()=>a(!0),10)},[o]);let l=g(u=>{this.webView=u},[]),y=g(u=>{this.container={...u,showOverlay:m,hideOverlay:_}},[]),m=g(()=>{n(!0)},[]),_=g(()=>{n(!1)},[]),qe=jr(()=>[this.styles["webview-container"],t?{...this.styles.show,backgroundColor:r??Yr}:this.styles.hide],[t]),Te=g(u=>{this.handleReactNativeWebViewMessage(u)},[]);return o?Oe.createElement(Ur,{ref:y,style:qe},Oe.createElement(Kr,{ref:l,source:{uri:`${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}`},onMessage:Te,style:this.styles["magic-webview"],webviewDebuggingEnabled:!0,autoManageStatusBarEnabled:!1,onShouldStartLoadWithRequest:u=>new URLSearchParams(u.url.split("?")[1]).get(Gr)?(Vr.openURL(u.url),!1):!0})):null};handleReactNativeWebViewMessage(r){let t=new URL(`${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}`);if(r.nativeEvent&&typeof r.nativeEvent.data=="string"&&(r.nativeEvent.url===`${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}`||r.nativeEvent.url===`${this.endpoint}/send/?params=${this.parameters}`||r.nativeEvent.title===`${t.hostname}/send/${t.search}`)){let n=JSON.parse(r.nativeEvent.data,(o,a)=>{try{if(a&&typeof a=="object"&&a.flag&&a.flag===Re)return new global[a.constructor](a.data.split(","))}catch(i){console.log("Error parsing data",i)}return a});if(n&&n.msgType&&this.messageHandlers.size){n.response=n.response??{};let o={data:n};for(let a of this.messageHandlers.values())a(o)}}}async msgPostedAfterInactivity(){let r=await I.getItem(S);if(r){let t=new Date(r).getTime(),n=new Date().getTime(),o=5*60*1e3;return n-t>o}return!1}hideOverlay(){this.container&&this.container.hideOverlay()}showOverlay(){this.container&&this.container.showOverlay()}async _post(r){if(await this.msgPostedAfterInactivity()){Me.emit(xe,r);return}if(this.webView&&this.webView.postMessage)this.webView.postMessage(JSON.stringify(r,(t,n)=>zr(n)?{constructor:n.constructor.name,data:n.toString(),flag:Re}:n),this.endpoint),I.setItem(S,new Date().toISOString());else throw Wr()}checkRelayerExistsInDOM(){return Promise.resolve(!0)}reloadRelayer(){return Promise.resolve(void 0)}};import{SDKBase as Hr}from"@magic-sdk/provider";var A=class extends Hr{get Relayer(){return this.overlay.Relayer}};export*from"@magic-sdk/commons";global.process=Be.merge(global.process,Zr);global.process.browser=!1;global.Buffer=Z;global.URL=$r;global.URLSearchParams=et;global.btoa=e=>Z.from(e,"binary").toString("base64");global.atob=e=>Z.from(e,"base64").toString("binary");var tn=Xr(A,{platform:"react-native",sdkName:"@magic-sdk/react-native-bare",version:"30.3.0",bundleId:rt(),defaultEndpoint:"https://box.magic.link/",ViewController:P,configureStorage:async()=>{let e=Qr.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"}),r=tt();return await Promise.all([e.defineDriver(r),e.defineDriver(Q)]),await e.setDriver([r._driver,Q._driver]),e}});export{tn as Magic,X as useInternetConnection};
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
24
|
+
mod
|
25
|
+
));
|
26
|
+
|
27
|
+
// ../../../node_modules/localforage-driver-memory/_driver.js
|
28
|
+
var require_driver = __commonJS({
|
29
|
+
"../../../node_modules/localforage-driver-memory/_driver.js"(exports) {
|
30
|
+
"use strict";
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
32
|
+
exports._driver = "localforage-driver-memory";
|
33
|
+
}
|
34
|
+
});
|
35
|
+
|
36
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/serialiser/createBlob.js
|
37
|
+
var require_createBlob = __commonJS({
|
38
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/serialiser/createBlob.js"(exports) {
|
39
|
+
"use strict";
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
41
|
+
function createBlob(parts, properties) {
|
42
|
+
parts = parts || [];
|
43
|
+
properties = properties || {};
|
44
|
+
try {
|
45
|
+
return new Blob(parts, properties);
|
46
|
+
} catch (e) {
|
47
|
+
if (e.name !== "TypeError") {
|
48
|
+
throw e;
|
49
|
+
}
|
50
|
+
var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
|
51
|
+
var builder = new Builder();
|
52
|
+
for (var i = 0; i < parts.length; i += 1) {
|
53
|
+
builder.append(parts[i]);
|
54
|
+
}
|
55
|
+
return builder.getBlob(properties.type);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
exports.createBlob = createBlob;
|
59
|
+
}
|
60
|
+
});
|
61
|
+
|
62
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/serialiser/index.js
|
63
|
+
var require_serialiser = __commonJS({
|
64
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/serialiser/index.js"(exports) {
|
65
|
+
"use strict";
|
66
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
67
|
+
var createBlob_1 = require_createBlob();
|
68
|
+
var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
|
69
|
+
var SERIALIZED_MARKER_LENGTH = "__lfsc__:".length;
|
70
|
+
var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + "arbf".length;
|
71
|
+
var toString = Object.prototype.toString;
|
72
|
+
function stringToBuffer(serializedString) {
|
73
|
+
var bufferLength = serializedString.length * 0.75;
|
74
|
+
var len = serializedString.length;
|
75
|
+
if (serializedString[serializedString.length - 1] === "=") {
|
76
|
+
bufferLength--;
|
77
|
+
if (serializedString[serializedString.length - 2] === "=") {
|
78
|
+
bufferLength--;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
var buffer = new ArrayBuffer(bufferLength);
|
82
|
+
var bytes = new Uint8Array(buffer);
|
83
|
+
for (var i = 0, p = 0; i < len; i += 4) {
|
84
|
+
var encoded1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i]);
|
85
|
+
var encoded2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 1]);
|
86
|
+
var encoded3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 2]);
|
87
|
+
var encoded4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 3]);
|
88
|
+
bytes[p++] = encoded1 << 2 | encoded2 >> 4;
|
89
|
+
bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
|
90
|
+
bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
|
91
|
+
}
|
92
|
+
return buffer;
|
93
|
+
}
|
94
|
+
exports.stringToBuffer = stringToBuffer;
|
95
|
+
function bufferToString(buffer) {
|
96
|
+
var bytes = new Uint8Array(buffer);
|
97
|
+
var base64String = "";
|
98
|
+
for (var i = 0; i < bytes.length; i += 3) {
|
99
|
+
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[bytes[i] >> 2];
|
100
|
+
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
|
101
|
+
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
|
102
|
+
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[bytes[i + 2] & 63];
|
103
|
+
}
|
104
|
+
if (bytes.length % 3 === 2) {
|
105
|
+
base64String = base64String.substring(0, base64String.length - 1) + "=";
|
106
|
+
} else if (bytes.length % 3 === 1) {
|
107
|
+
base64String = base64String.substring(0, base64String.length - 2) + "==";
|
108
|
+
}
|
109
|
+
return base64String;
|
110
|
+
}
|
111
|
+
exports.bufferToString = bufferToString;
|
112
|
+
function serialize(value, callback) {
|
113
|
+
var valueType = "";
|
114
|
+
if (value) {
|
115
|
+
valueType = toString.call(value);
|
116
|
+
}
|
117
|
+
if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString.call(value.buffer) === "[object ArrayBuffer]")) {
|
118
|
+
var buffer = void 0;
|
119
|
+
var marker = "__lfsc__:";
|
120
|
+
if (value instanceof ArrayBuffer) {
|
121
|
+
buffer = value;
|
122
|
+
marker += "arbf";
|
123
|
+
} else {
|
124
|
+
buffer = value.buffer;
|
125
|
+
if (valueType === "[object Int8Array]") {
|
126
|
+
marker += "si08";
|
127
|
+
} else if (valueType === "[object Uint8Array]") {
|
128
|
+
marker += "ui08";
|
129
|
+
} else if (valueType === "[object Uint8ClampedArray]") {
|
130
|
+
marker += "uic8";
|
131
|
+
} else if (valueType === "[object Int16Array]") {
|
132
|
+
marker += "si16";
|
133
|
+
} else if (valueType === "[object Uint16Array]") {
|
134
|
+
marker += "ur16";
|
135
|
+
} else if (valueType === "[object Int32Array]") {
|
136
|
+
marker += "si32";
|
137
|
+
} else if (valueType === "[object Uint32Array]") {
|
138
|
+
marker += "ui32";
|
139
|
+
} else if (valueType === "[object Float32Array]") {
|
140
|
+
marker += "fl32";
|
141
|
+
} else if (valueType === "[object Float64Array]") {
|
142
|
+
marker += "fl64";
|
143
|
+
} else {
|
144
|
+
callback(new Error("Failed to get type for BinaryArray"));
|
145
|
+
}
|
146
|
+
}
|
147
|
+
callback(marker + bufferToString(buffer));
|
148
|
+
} else if (valueType === "[object Blob]") {
|
149
|
+
var fileReader = new FileReader();
|
150
|
+
fileReader.onload = function() {
|
151
|
+
var str = "~~local_forage_type~" + value.type + "~" + bufferToString(this.result);
|
152
|
+
callback("__lfsc__:blob" + str);
|
153
|
+
};
|
154
|
+
fileReader.readAsArrayBuffer(value);
|
155
|
+
} else {
|
156
|
+
try {
|
157
|
+
callback(JSON.stringify(value));
|
158
|
+
} catch (e) {
|
159
|
+
console.error("Couldn't convert value into a JSON string: ", value);
|
160
|
+
callback(null, e);
|
161
|
+
}
|
162
|
+
}
|
163
|
+
}
|
164
|
+
exports.serialize = serialize;
|
165
|
+
function deserialize(value) {
|
166
|
+
if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== "__lfsc__:") {
|
167
|
+
return JSON.parse(value);
|
168
|
+
}
|
169
|
+
var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
|
170
|
+
var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
|
171
|
+
var blobType;
|
172
|
+
if (type === "blob" && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
|
173
|
+
var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
|
174
|
+
blobType = matcher[1];
|
175
|
+
serializedString = serializedString.substring(matcher[0].length);
|
176
|
+
}
|
177
|
+
var buffer = stringToBuffer(serializedString);
|
178
|
+
switch (type) {
|
179
|
+
case "arbf":
|
180
|
+
return buffer;
|
181
|
+
case "blob":
|
182
|
+
return createBlob_1.createBlob([buffer], { type: blobType });
|
183
|
+
case "si08":
|
184
|
+
return new Int8Array(buffer);
|
185
|
+
case "ui08":
|
186
|
+
return new Uint8Array(buffer);
|
187
|
+
case "uic8":
|
188
|
+
return new Uint8ClampedArray(buffer);
|
189
|
+
case "si16":
|
190
|
+
return new Int16Array(buffer);
|
191
|
+
case "ur16":
|
192
|
+
return new Uint16Array(buffer);
|
193
|
+
case "si32":
|
194
|
+
return new Int32Array(buffer);
|
195
|
+
case "ui32":
|
196
|
+
return new Uint32Array(buffer);
|
197
|
+
case "fl32":
|
198
|
+
return new Float32Array(buffer);
|
199
|
+
case "fl64":
|
200
|
+
return new Float64Array(buffer);
|
201
|
+
default:
|
202
|
+
throw new Error("Unkown type: " + type);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
exports.deserialize = deserialize;
|
206
|
+
}
|
207
|
+
});
|
208
|
+
|
209
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/clone.js
|
210
|
+
var require_clone = __commonJS({
|
211
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/clone.js"(exports) {
|
212
|
+
"use strict";
|
213
|
+
var __values = exports && exports.__values || function(o) {
|
214
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
215
|
+
if (m) return m.call(o);
|
216
|
+
return {
|
217
|
+
next: function() {
|
218
|
+
if (o && i >= o.length) o = void 0;
|
219
|
+
return { value: o && o[i++], done: !o };
|
220
|
+
}
|
221
|
+
};
|
222
|
+
};
|
223
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
224
|
+
function clone(obj) {
|
225
|
+
var e_1, _a;
|
226
|
+
if (obj === null || typeof obj !== "object" || "isActiveClone" in obj) {
|
227
|
+
return obj;
|
228
|
+
}
|
229
|
+
var temp = obj instanceof Date ? new Date(obj) : obj.constructor();
|
230
|
+
try {
|
231
|
+
for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
232
|
+
var key = _c.value;
|
233
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
234
|
+
obj["isActiveClone"] = null;
|
235
|
+
temp[key] = clone(obj[key]);
|
236
|
+
delete obj["isActiveClone"];
|
237
|
+
}
|
238
|
+
}
|
239
|
+
} catch (e_1_1) {
|
240
|
+
e_1 = { error: e_1_1 };
|
241
|
+
} finally {
|
242
|
+
try {
|
243
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
244
|
+
} finally {
|
245
|
+
if (e_1) throw e_1.error;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
return temp;
|
249
|
+
}
|
250
|
+
exports.clone = clone;
|
251
|
+
}
|
252
|
+
});
|
253
|
+
|
254
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/getKeyPrefix.js
|
255
|
+
var require_getKeyPrefix = __commonJS({
|
256
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/getKeyPrefix.js"(exports) {
|
257
|
+
"use strict";
|
258
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
259
|
+
function getKeyPrefix(options, defaultConfig) {
|
260
|
+
return (options.name || defaultConfig.name) + "/" + (options.storeName || defaultConfig.storeName) + "/";
|
261
|
+
}
|
262
|
+
exports.getKeyPrefix = getKeyPrefix;
|
263
|
+
}
|
264
|
+
});
|
265
|
+
|
266
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/executeCallback.js
|
267
|
+
var require_executeCallback = __commonJS({
|
268
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/executeCallback.js"(exports) {
|
269
|
+
"use strict";
|
270
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
271
|
+
function executeCallback(promise, callback) {
|
272
|
+
if (callback) {
|
273
|
+
promise.then(function(result) {
|
274
|
+
callback(null, result);
|
275
|
+
}, function(error) {
|
276
|
+
callback(error);
|
277
|
+
});
|
278
|
+
}
|
279
|
+
}
|
280
|
+
exports.executeCallback = executeCallback;
|
281
|
+
}
|
282
|
+
});
|
283
|
+
|
284
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/getCallback.js
|
285
|
+
var require_getCallback = __commonJS({
|
286
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/getCallback.js"(exports) {
|
287
|
+
"use strict";
|
288
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
289
|
+
function getCallback() {
|
290
|
+
var _args = [];
|
291
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
292
|
+
_args[_i] = arguments[_i];
|
293
|
+
}
|
294
|
+
if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
|
295
|
+
return arguments[arguments.length - 1];
|
296
|
+
}
|
297
|
+
}
|
298
|
+
exports.getCallback = getCallback;
|
299
|
+
}
|
300
|
+
});
|
301
|
+
|
302
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/dropInstanceCommon.js
|
303
|
+
var require_dropInstanceCommon = __commonJS({
|
304
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/dropInstanceCommon.js"(exports) {
|
305
|
+
"use strict";
|
306
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
307
|
+
var getCallback_1 = require_getCallback();
|
308
|
+
var getKeyPrefix_1 = require_getKeyPrefix();
|
309
|
+
function dropInstanceCommon(options, callback) {
|
310
|
+
var _this = this;
|
311
|
+
callback = getCallback_1.getCallback.apply(this, arguments);
|
312
|
+
options = typeof options !== "function" && options || {};
|
313
|
+
if (!options.name) {
|
314
|
+
var currentConfig = this.config();
|
315
|
+
options.name = options.name || currentConfig.name;
|
316
|
+
options.storeName = options.storeName || currentConfig.storeName;
|
317
|
+
}
|
318
|
+
var promise;
|
319
|
+
if (!options.name) {
|
320
|
+
promise = Promise.reject("Invalid arguments");
|
321
|
+
} else {
|
322
|
+
promise = new Promise(function(resolve) {
|
323
|
+
if (!options.storeName) {
|
324
|
+
resolve(options.name + "/");
|
325
|
+
} else {
|
326
|
+
resolve(getKeyPrefix_1.getKeyPrefix(options, _this._defaultConfig));
|
327
|
+
}
|
328
|
+
});
|
329
|
+
}
|
330
|
+
return { promise, callback };
|
331
|
+
}
|
332
|
+
exports.dropInstanceCommon = dropInstanceCommon;
|
333
|
+
}
|
334
|
+
});
|
335
|
+
|
336
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/normaliseKey.js
|
337
|
+
var require_normaliseKey = __commonJS({
|
338
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/normaliseKey.js"(exports) {
|
339
|
+
"use strict";
|
340
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
341
|
+
function normaliseKey(key) {
|
342
|
+
if (typeof key !== "string") {
|
343
|
+
console.warn(key + " used as a key, but it is not a string.");
|
344
|
+
key = String(key);
|
345
|
+
}
|
346
|
+
return key;
|
347
|
+
}
|
348
|
+
exports.normaliseKey = normaliseKey;
|
349
|
+
}
|
350
|
+
});
|
351
|
+
|
352
|
+
// ../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/index.js
|
353
|
+
var require_localforage_driver_commons = __commonJS({
|
354
|
+
"../../../node_modules/localforage-driver-memory/node_modules/localforage-driver-commons/index.js"(exports) {
|
355
|
+
"use strict";
|
356
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
357
|
+
var serialiser_1 = require_serialiser();
|
358
|
+
var clone_1 = require_clone();
|
359
|
+
exports.clone = clone_1.clone;
|
360
|
+
var getKeyPrefix_1 = require_getKeyPrefix();
|
361
|
+
exports.getKeyPrefix = getKeyPrefix_1.getKeyPrefix;
|
362
|
+
var executeCallback_1 = require_executeCallback();
|
363
|
+
exports.executeCallback = executeCallback_1.executeCallback;
|
364
|
+
var getCallback_1 = require_getCallback();
|
365
|
+
exports.getCallback = getCallback_1.getCallback;
|
366
|
+
var dropInstanceCommon_1 = require_dropInstanceCommon();
|
367
|
+
exports.dropInstanceCommon = dropInstanceCommon_1.dropInstanceCommon;
|
368
|
+
var normaliseKey_1 = require_normaliseKey();
|
369
|
+
exports.normaliseKey = normaliseKey_1.normaliseKey;
|
370
|
+
exports.serialiser = {
|
371
|
+
bufferToString: serialiser_1.bufferToString,
|
372
|
+
deserialize: serialiser_1.deserialize,
|
373
|
+
serialize: serialiser_1.serialize,
|
374
|
+
stringToBuffer: serialiser_1.stringToBuffer
|
375
|
+
};
|
376
|
+
}
|
377
|
+
});
|
378
|
+
|
379
|
+
// ../../../node_modules/localforage-driver-memory/Store.js
|
380
|
+
var require_Store = __commonJS({
|
381
|
+
"../../../node_modules/localforage-driver-memory/Store.js"(exports) {
|
382
|
+
"use strict";
|
383
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
384
|
+
var stores = {};
|
385
|
+
var Store = (
|
386
|
+
/** @class */
|
387
|
+
function() {
|
388
|
+
function Store2(kp) {
|
389
|
+
this.kp = kp;
|
390
|
+
this.data = {};
|
391
|
+
}
|
392
|
+
Store2.resolve = function(kp) {
|
393
|
+
if (!stores[kp]) {
|
394
|
+
stores[kp] = new Store2(kp);
|
395
|
+
}
|
396
|
+
return stores[kp];
|
397
|
+
};
|
398
|
+
Store2.prototype.clear = function() {
|
399
|
+
this.data = {};
|
400
|
+
};
|
401
|
+
Store2.prototype.drop = function() {
|
402
|
+
this.clear();
|
403
|
+
delete stores[this.kp];
|
404
|
+
};
|
405
|
+
Store2.prototype.get = function(key) {
|
406
|
+
return this.data[key];
|
407
|
+
};
|
408
|
+
Store2.prototype.key = function(idx) {
|
409
|
+
return this.keys()[idx];
|
410
|
+
};
|
411
|
+
Store2.prototype.keys = function() {
|
412
|
+
return Object.keys(this.data);
|
413
|
+
};
|
414
|
+
Store2.prototype.rm = function(k) {
|
415
|
+
delete this.data[k];
|
416
|
+
};
|
417
|
+
Store2.prototype.set = function(k, v) {
|
418
|
+
this.data[k] = v;
|
419
|
+
};
|
420
|
+
return Store2;
|
421
|
+
}()
|
422
|
+
);
|
423
|
+
exports.Store = Store;
|
424
|
+
}
|
425
|
+
});
|
426
|
+
|
427
|
+
// ../../../node_modules/localforage-driver-memory/_initStorage.js
|
428
|
+
var require_initStorage = __commonJS({
|
429
|
+
"../../../node_modules/localforage-driver-memory/_initStorage.js"(exports) {
|
430
|
+
"use strict";
|
431
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
432
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
433
|
+
var Store_1 = require_Store();
|
434
|
+
function _initStorage(options) {
|
435
|
+
var opts = options ? localforage_driver_commons_1.clone(options) : {};
|
436
|
+
var kp = localforage_driver_commons_1.getKeyPrefix(opts, this._defaultConfig);
|
437
|
+
var store = Store_1.Store.resolve(kp);
|
438
|
+
this._dbInfo = opts;
|
439
|
+
this._dbInfo.serializer = localforage_driver_commons_1.serialiser;
|
440
|
+
this._dbInfo.keyPrefix = kp;
|
441
|
+
this._dbInfo.mStore = store;
|
442
|
+
return Promise.resolve();
|
443
|
+
}
|
444
|
+
exports._initStorage = _initStorage;
|
445
|
+
}
|
446
|
+
});
|
447
|
+
|
448
|
+
// ../../../node_modules/localforage-driver-memory/clear.js
|
449
|
+
var require_clear = __commonJS({
|
450
|
+
"../../../node_modules/localforage-driver-memory/clear.js"(exports) {
|
451
|
+
"use strict";
|
452
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
453
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
454
|
+
function clear(callback) {
|
455
|
+
var _this = this;
|
456
|
+
var promise = this.ready().then(function() {
|
457
|
+
_this._dbInfo.mStore.clear();
|
458
|
+
});
|
459
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
460
|
+
return promise;
|
461
|
+
}
|
462
|
+
exports.clear = clear;
|
463
|
+
}
|
464
|
+
});
|
465
|
+
|
466
|
+
// ../../../node_modules/localforage-driver-memory/dropInstance.js
|
467
|
+
var require_dropInstance = __commonJS({
|
468
|
+
"../../../node_modules/localforage-driver-memory/dropInstance.js"(exports) {
|
469
|
+
"use strict";
|
470
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
471
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
472
|
+
var Store_1 = require_Store();
|
473
|
+
function dropInstance(_options, _cb) {
|
474
|
+
var _a = localforage_driver_commons_1.dropInstanceCommon.apply(this, arguments), promise = _a.promise, callback = _a.callback;
|
475
|
+
var outPromise = promise.then(function(keyPrefix) {
|
476
|
+
Store_1.Store.resolve(keyPrefix).drop();
|
477
|
+
});
|
478
|
+
localforage_driver_commons_1.executeCallback(outPromise, callback);
|
479
|
+
return promise;
|
480
|
+
}
|
481
|
+
exports.dropInstance = dropInstance;
|
482
|
+
}
|
483
|
+
});
|
484
|
+
|
485
|
+
// ../../../node_modules/localforage-driver-memory/getItem.js
|
486
|
+
var require_getItem = __commonJS({
|
487
|
+
"../../../node_modules/localforage-driver-memory/getItem.js"(exports) {
|
488
|
+
"use strict";
|
489
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
490
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
491
|
+
function getItem(key$, callback) {
|
492
|
+
var _this = this;
|
493
|
+
key$ = localforage_driver_commons_1.normaliseKey(key$);
|
494
|
+
var promise = this.ready().then(function() {
|
495
|
+
var result = _this._dbInfo.mStore.get(key$);
|
496
|
+
return result == null ? null : _this._dbInfo.serializer.deserialize(result);
|
497
|
+
});
|
498
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
499
|
+
return promise;
|
500
|
+
}
|
501
|
+
exports.getItem = getItem;
|
502
|
+
}
|
503
|
+
});
|
504
|
+
|
505
|
+
// ../../../node_modules/localforage-driver-memory/iterate.js
|
506
|
+
var require_iterate = __commonJS({
|
507
|
+
"../../../node_modules/localforage-driver-memory/iterate.js"(exports) {
|
508
|
+
"use strict";
|
509
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
510
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
511
|
+
function iterate(iterator, callback) {
|
512
|
+
var _this = this;
|
513
|
+
var promise = this.ready().then(function() {
|
514
|
+
var store = _this._dbInfo.mStore;
|
515
|
+
var keys = store.keys();
|
516
|
+
for (var i = 0; i < keys.length; i++) {
|
517
|
+
var value = store.get(keys[i]);
|
518
|
+
if (value) {
|
519
|
+
value = _this._dbInfo.serializer.deserialize(value);
|
520
|
+
}
|
521
|
+
value = iterator(value, keys[i], i + 1);
|
522
|
+
if (value !== void 0) {
|
523
|
+
return value;
|
524
|
+
}
|
525
|
+
}
|
526
|
+
});
|
527
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
528
|
+
return promise;
|
529
|
+
}
|
530
|
+
exports.iterate = iterate;
|
531
|
+
}
|
532
|
+
});
|
533
|
+
|
534
|
+
// ../../../node_modules/localforage-driver-memory/key.js
|
535
|
+
var require_key = __commonJS({
|
536
|
+
"../../../node_modules/localforage-driver-memory/key.js"(exports) {
|
537
|
+
"use strict";
|
538
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
539
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
540
|
+
function key(idx, callback) {
|
541
|
+
var _this = this;
|
542
|
+
var promise = this.ready().then(function() {
|
543
|
+
var result;
|
544
|
+
try {
|
545
|
+
result = _this._dbInfo.mStore.key(idx);
|
546
|
+
if (result === void 0) {
|
547
|
+
result = null;
|
548
|
+
}
|
549
|
+
} catch (_a) {
|
550
|
+
result = null;
|
551
|
+
}
|
552
|
+
return result;
|
553
|
+
});
|
554
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
555
|
+
return promise;
|
556
|
+
}
|
557
|
+
exports.key = key;
|
558
|
+
}
|
559
|
+
});
|
560
|
+
|
561
|
+
// ../../../node_modules/localforage-driver-memory/keys.js
|
562
|
+
var require_keys = __commonJS({
|
563
|
+
"../../../node_modules/localforage-driver-memory/keys.js"(exports) {
|
564
|
+
"use strict";
|
565
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
566
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
567
|
+
function keys(callback) {
|
568
|
+
var _this = this;
|
569
|
+
var promise = this.ready().then(function() {
|
570
|
+
return _this._dbInfo.mStore.keys();
|
571
|
+
});
|
572
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
573
|
+
return promise;
|
574
|
+
}
|
575
|
+
exports.keys = keys;
|
576
|
+
}
|
577
|
+
});
|
578
|
+
|
579
|
+
// ../../../node_modules/localforage-driver-memory/length.js
|
580
|
+
var require_length = __commonJS({
|
581
|
+
"../../../node_modules/localforage-driver-memory/length.js"(exports) {
|
582
|
+
"use strict";
|
583
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
584
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
585
|
+
function length(callback) {
|
586
|
+
var promise = this.keys().then(function(keys$) {
|
587
|
+
return keys$.length;
|
588
|
+
});
|
589
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
590
|
+
return promise;
|
591
|
+
}
|
592
|
+
exports.length = length;
|
593
|
+
}
|
594
|
+
});
|
595
|
+
|
596
|
+
// ../../../node_modules/localforage-driver-memory/removeItem.js
|
597
|
+
var require_removeItem = __commonJS({
|
598
|
+
"../../../node_modules/localforage-driver-memory/removeItem.js"(exports) {
|
599
|
+
"use strict";
|
600
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
601
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
602
|
+
function removeItem(key$, callback) {
|
603
|
+
var _this = this;
|
604
|
+
key$ = localforage_driver_commons_1.normaliseKey(key$);
|
605
|
+
var promise = this.ready().then(function() {
|
606
|
+
_this._dbInfo.mStore.rm(key$);
|
607
|
+
});
|
608
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
609
|
+
return promise;
|
610
|
+
}
|
611
|
+
exports.removeItem = removeItem;
|
612
|
+
}
|
613
|
+
});
|
614
|
+
|
615
|
+
// ../../../node_modules/localforage-driver-memory/setItem.js
|
616
|
+
var require_setItem = __commonJS({
|
617
|
+
"../../../node_modules/localforage-driver-memory/setItem.js"(exports) {
|
618
|
+
"use strict";
|
619
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
620
|
+
var localforage_driver_commons_1 = require_localforage_driver_commons();
|
621
|
+
function setItem(key$, value, callback) {
|
622
|
+
var _this = this;
|
623
|
+
key$ = localforage_driver_commons_1.normaliseKey(key$);
|
624
|
+
var promise = this.ready().then(function() {
|
625
|
+
if (value === void 0) {
|
626
|
+
value = null;
|
627
|
+
}
|
628
|
+
var originalValue = value;
|
629
|
+
return new Promise(function(resolve, reject) {
|
630
|
+
_this._dbInfo.serializer.serialize(value, function(value$, error) {
|
631
|
+
if (error) {
|
632
|
+
reject(error);
|
633
|
+
} else {
|
634
|
+
try {
|
635
|
+
_this._dbInfo.mStore.set(key$, value$);
|
636
|
+
resolve(originalValue);
|
637
|
+
} catch (e) {
|
638
|
+
reject(e);
|
639
|
+
}
|
640
|
+
}
|
641
|
+
});
|
642
|
+
});
|
643
|
+
});
|
644
|
+
localforage_driver_commons_1.executeCallback(promise, callback);
|
645
|
+
return promise;
|
646
|
+
}
|
647
|
+
exports.setItem = setItem;
|
648
|
+
}
|
649
|
+
});
|
650
|
+
|
651
|
+
// ../../../node_modules/localforage-driver-memory/index.js
|
652
|
+
var require_localforage_driver_memory = __commonJS({
|
653
|
+
"../../../node_modules/localforage-driver-memory/index.js"(exports) {
|
654
|
+
"use strict";
|
655
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
656
|
+
exports._support = true;
|
657
|
+
var _driver_1 = require_driver();
|
658
|
+
exports._driver = _driver_1._driver;
|
659
|
+
var _initStorage_1 = require_initStorage();
|
660
|
+
exports._initStorage = _initStorage_1._initStorage;
|
661
|
+
var clear_1 = require_clear();
|
662
|
+
exports.clear = clear_1.clear;
|
663
|
+
var dropInstance_1 = require_dropInstance();
|
664
|
+
exports.dropInstance = dropInstance_1.dropInstance;
|
665
|
+
var getItem_1 = require_getItem();
|
666
|
+
exports.getItem = getItem_1.getItem;
|
667
|
+
var iterate_1 = require_iterate();
|
668
|
+
exports.iterate = iterate_1.iterate;
|
669
|
+
var key_1 = require_key();
|
670
|
+
exports.key = key_1.key;
|
671
|
+
var keys_1 = require_keys();
|
672
|
+
exports.keys = keys_1.keys;
|
673
|
+
var length_1 = require_length();
|
674
|
+
exports.length = length_1.length;
|
675
|
+
var removeItem_1 = require_removeItem();
|
676
|
+
exports.removeItem = removeItem_1.removeItem;
|
677
|
+
var setItem_1 = require_setItem();
|
678
|
+
exports.setItem = setItem_1.setItem;
|
679
|
+
}
|
680
|
+
});
|
681
|
+
|
682
|
+
// src/index.ts
|
683
|
+
var memoryDriver = __toESM(require_localforage_driver_memory());
|
684
|
+
import "regenerator-runtime/runtime";
|
685
|
+
import { createSDK } from "@magic-sdk/provider";
|
686
|
+
import * as processPolyfill from "process";
|
687
|
+
import localForage from "localforage";
|
688
|
+
import { URL as URLPolyfill, URLSearchParams as URLSearchParamsPolyfill } from "whatwg-url";
|
689
|
+
import { Buffer as Buffer2 } from "buffer";
|
690
|
+
import * as _ from "lodash";
|
691
|
+
import { getBundleId } from "react-native-device-info";
|
692
|
+
import { driverWithoutSerialization } from "@aveq-research/localforage-asyncstorage-driver";
|
693
|
+
|
694
|
+
// src/react-native-webview-controller.tsx
|
695
|
+
import React, { useState as useState2, useCallback, useMemo, useEffect as useEffect2 } from "react";
|
696
|
+
import { Linking, StyleSheet } from "react-native";
|
697
|
+
import { WebView } from "react-native-webview";
|
698
|
+
import { SafeAreaView } from "react-native-safe-area-context";
|
699
|
+
import { ViewController, createModalNotReadyError } from "@magic-sdk/provider";
|
700
|
+
import { isTypedArray } from "lodash";
|
701
|
+
import AsyncStorage from "@react-native-async-storage/async-storage";
|
702
|
+
import { EventRegister } from "react-native-event-listeners";
|
703
|
+
|
704
|
+
// src/hooks.ts
|
705
|
+
import { useEffect, useState } from "react";
|
706
|
+
import NetInfo from "@react-native-community/netinfo";
|
707
|
+
var useInternetConnection = () => {
|
708
|
+
const [isConnected, setIsConnected] = useState(true);
|
709
|
+
useEffect(() => {
|
710
|
+
const handleConnectionChange = (connectionInfo) => {
|
711
|
+
setIsConnected(!!connectionInfo.isConnected);
|
712
|
+
};
|
713
|
+
return NetInfo.addEventListener(handleConnectionChange);
|
714
|
+
}, []);
|
715
|
+
return isConnected;
|
716
|
+
};
|
717
|
+
|
718
|
+
// src/react-native-webview-controller.tsx
|
719
|
+
var MAGIC_PAYLOAD_FLAG_TYPED_ARRAY = "MAGIC_PAYLOAD_FLAG_TYPED_ARRAY";
|
720
|
+
var OPEN_IN_DEVICE_BROWSER = "open_in_device_browser";
|
721
|
+
var DEFAULT_BACKGROUND_COLOR = "#FFFFFF";
|
722
|
+
var MSG_POSTED_AFTER_INACTIVITY_EVENT = "msg_posted_after_inactivity_event";
|
723
|
+
var LAST_MESSAGE_TIME = "lastMessageTime";
|
724
|
+
function createWebViewStyles() {
|
725
|
+
return StyleSheet.create({
|
726
|
+
"magic-webview": {
|
727
|
+
flex: 1,
|
728
|
+
backgroundColor: "transparent"
|
729
|
+
},
|
730
|
+
"webview-container": {
|
731
|
+
flex: 1,
|
732
|
+
width: "100%",
|
733
|
+
backgroundColor: "transparent",
|
734
|
+
position: "absolute",
|
735
|
+
top: 0,
|
736
|
+
left: 0,
|
737
|
+
right: 0,
|
738
|
+
bottom: 0
|
739
|
+
},
|
740
|
+
show: {
|
741
|
+
zIndex: 1e4,
|
742
|
+
elevation: 1e4
|
743
|
+
},
|
744
|
+
hide: {
|
745
|
+
zIndex: -1e4,
|
746
|
+
elevation: 0
|
747
|
+
}
|
748
|
+
});
|
749
|
+
}
|
750
|
+
var ReactNativeWebViewController = class extends ViewController {
|
751
|
+
webView;
|
752
|
+
container;
|
753
|
+
styles;
|
754
|
+
init() {
|
755
|
+
this.webView = null;
|
756
|
+
this.container = null;
|
757
|
+
this.styles = createWebViewStyles();
|
758
|
+
}
|
759
|
+
/**
|
760
|
+
* Renders a React Native `<WebView>` with built-in message handling to and
|
761
|
+
* from the Magic `<iframe>` context.
|
762
|
+
*/
|
763
|
+
// Validating this logic requires lots of React-specific boilerplate. We will
|
764
|
+
// revisit this method for unit testing in the future. For now, manual testing
|
765
|
+
// is sufficient (this logic is stable right now and not expected to change in
|
766
|
+
// the foreseeable future).
|
767
|
+
/* istanbul ignore next */
|
768
|
+
Relayer = (backgroundColor) => {
|
769
|
+
const [show, setShow] = useState2(false);
|
770
|
+
const [mountOverlay, setMountOverlay] = useState2(true);
|
771
|
+
const isConnected = useInternetConnection();
|
772
|
+
useEffect2(() => {
|
773
|
+
this.isConnectedToInternet = isConnected;
|
774
|
+
}, [isConnected]);
|
775
|
+
useEffect2(() => {
|
776
|
+
AsyncStorage.setItem(LAST_MESSAGE_TIME, "");
|
777
|
+
return () => {
|
778
|
+
this.isReadyForRequest = false;
|
779
|
+
};
|
780
|
+
}, []);
|
781
|
+
useEffect2(() => {
|
782
|
+
EventRegister.addEventListener(MSG_POSTED_AFTER_INACTIVITY_EVENT, async (message) => {
|
783
|
+
this.isReadyForRequest = false;
|
784
|
+
setMountOverlay(false);
|
785
|
+
this.post(message.msgType, message.payload);
|
786
|
+
await AsyncStorage.setItem(LAST_MESSAGE_TIME, (/* @__PURE__ */ new Date()).toISOString());
|
787
|
+
});
|
788
|
+
}, []);
|
789
|
+
useEffect2(() => {
|
790
|
+
if (!mountOverlay) {
|
791
|
+
setTimeout(() => setMountOverlay(true), 10);
|
792
|
+
}
|
793
|
+
}, [mountOverlay]);
|
794
|
+
const webViewRef = useCallback((webView) => {
|
795
|
+
this.webView = webView;
|
796
|
+
}, []);
|
797
|
+
const containerRef = useCallback((view) => {
|
798
|
+
this.container = {
|
799
|
+
...view,
|
800
|
+
showOverlay,
|
801
|
+
hideOverlay
|
802
|
+
};
|
803
|
+
}, []);
|
804
|
+
const showOverlay = useCallback(() => {
|
805
|
+
setShow(true);
|
806
|
+
}, []);
|
807
|
+
const hideOverlay = useCallback(() => {
|
808
|
+
setShow(false);
|
809
|
+
}, []);
|
810
|
+
const containerStyles = useMemo(() => {
|
811
|
+
return [
|
812
|
+
this.styles["webview-container"],
|
813
|
+
show ? {
|
814
|
+
...this.styles.show,
|
815
|
+
backgroundColor: backgroundColor ?? DEFAULT_BACKGROUND_COLOR
|
816
|
+
} : this.styles.hide
|
817
|
+
];
|
818
|
+
}, [show]);
|
819
|
+
const handleWebViewMessage = useCallback((event) => {
|
820
|
+
this.handleReactNativeWebViewMessage(event);
|
821
|
+
}, []);
|
822
|
+
if (!mountOverlay) {
|
823
|
+
return null;
|
824
|
+
}
|
825
|
+
return /* @__PURE__ */ React.createElement(SafeAreaView, { ref: containerRef, style: containerStyles }, /* @__PURE__ */ React.createElement(
|
826
|
+
WebView,
|
827
|
+
{
|
828
|
+
ref: webViewRef,
|
829
|
+
source: { uri: `${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}` },
|
830
|
+
onMessage: handleWebViewMessage,
|
831
|
+
style: this.styles["magic-webview"],
|
832
|
+
webviewDebuggingEnabled: true,
|
833
|
+
autoManageStatusBarEnabled: false,
|
834
|
+
onShouldStartLoadWithRequest: (event) => {
|
835
|
+
const queryParams = new URLSearchParams(event.url.split("?")[1]);
|
836
|
+
const openInDeviceBrowser = queryParams.get(OPEN_IN_DEVICE_BROWSER);
|
837
|
+
if (openInDeviceBrowser) {
|
838
|
+
Linking.openURL(event.url);
|
839
|
+
return false;
|
840
|
+
}
|
841
|
+
return true;
|
842
|
+
}
|
843
|
+
}
|
844
|
+
));
|
845
|
+
};
|
846
|
+
/**
|
847
|
+
* Route incoming messages from a React Native `<WebView>`.
|
848
|
+
*/
|
849
|
+
handleReactNativeWebViewMessage(event) {
|
850
|
+
const url = new URL(`${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}`);
|
851
|
+
if (event.nativeEvent && typeof event.nativeEvent.data === "string" && /* Backward compatible */
|
852
|
+
(event.nativeEvent.url === `${this.endpoint}/send/?params=${encodeURIComponent(this.parameters)}` || event.nativeEvent.url === `${this.endpoint}/send/?params=${this.parameters}` || event.nativeEvent.title === `${url.hostname}/send/${url.search}`)) {
|
853
|
+
const data = JSON.parse(event.nativeEvent.data, (key, value) => {
|
854
|
+
try {
|
855
|
+
if (value && typeof value === "object" && value.flag && value.flag === MAGIC_PAYLOAD_FLAG_TYPED_ARRAY) {
|
856
|
+
return new global[value.constructor](value.data.split(","));
|
857
|
+
}
|
858
|
+
} catch (e) {
|
859
|
+
console.log("Error parsing data", e);
|
860
|
+
}
|
861
|
+
return value;
|
862
|
+
});
|
863
|
+
if (data && data.msgType && this.messageHandlers.size) {
|
864
|
+
data.response = data.response ?? {};
|
865
|
+
const magicEvent = { data };
|
866
|
+
for (const handler of this.messageHandlers.values()) {
|
867
|
+
handler(magicEvent);
|
868
|
+
}
|
869
|
+
}
|
870
|
+
}
|
871
|
+
}
|
872
|
+
async msgPostedAfterInactivity() {
|
873
|
+
const lastPostTimestamp = await AsyncStorage.getItem(LAST_MESSAGE_TIME);
|
874
|
+
if (lastPostTimestamp) {
|
875
|
+
const lastPostDate = new Date(lastPostTimestamp).getTime();
|
876
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
877
|
+
const fiveMinutes = 5 * 60 * 1e3;
|
878
|
+
return now - lastPostDate > fiveMinutes;
|
879
|
+
}
|
880
|
+
return false;
|
881
|
+
}
|
882
|
+
hideOverlay() {
|
883
|
+
if (this.container) this.container.hideOverlay();
|
884
|
+
}
|
885
|
+
showOverlay() {
|
886
|
+
if (this.container) this.container.showOverlay();
|
887
|
+
}
|
888
|
+
async _post(data) {
|
889
|
+
if (await this.msgPostedAfterInactivity()) {
|
890
|
+
EventRegister.emit(MSG_POSTED_AFTER_INACTIVITY_EVENT, data);
|
891
|
+
return;
|
892
|
+
}
|
893
|
+
if (this.webView && this.webView.postMessage) {
|
894
|
+
this.webView.postMessage(
|
895
|
+
JSON.stringify(data, (key, value) => {
|
896
|
+
if (isTypedArray(value)) {
|
897
|
+
return {
|
898
|
+
constructor: value.constructor.name,
|
899
|
+
data: value.toString(),
|
900
|
+
flag: MAGIC_PAYLOAD_FLAG_TYPED_ARRAY
|
901
|
+
};
|
902
|
+
}
|
903
|
+
return value;
|
904
|
+
}),
|
905
|
+
this.endpoint
|
906
|
+
);
|
907
|
+
AsyncStorage.setItem(LAST_MESSAGE_TIME, (/* @__PURE__ */ new Date()).toISOString());
|
908
|
+
} else {
|
909
|
+
throw createModalNotReadyError();
|
910
|
+
}
|
911
|
+
}
|
912
|
+
// Todo - implement these methods
|
913
|
+
/* istanbul ignore next */
|
914
|
+
checkRelayerExistsInDOM() {
|
915
|
+
return Promise.resolve(true);
|
916
|
+
}
|
917
|
+
/* istanbul ignore next */
|
918
|
+
reloadRelayer() {
|
919
|
+
return Promise.resolve(void 0);
|
920
|
+
}
|
921
|
+
};
|
922
|
+
|
923
|
+
// src/react-native-sdk-base.ts
|
924
|
+
import { SDKBase } from "@magic-sdk/provider";
|
925
|
+
var SDKBaseReactNative = class extends SDKBase {
|
926
|
+
get Relayer() {
|
927
|
+
return this.overlay.Relayer;
|
928
|
+
}
|
929
|
+
};
|
930
|
+
|
931
|
+
// src/index.ts
|
932
|
+
export * from "@magic-sdk/commons";
|
933
|
+
global.process = _.merge(global.process, processPolyfill);
|
934
|
+
global.process.browser = false;
|
935
|
+
global.Buffer = Buffer2;
|
936
|
+
global.URL = URLPolyfill;
|
937
|
+
global.URLSearchParams = URLSearchParamsPolyfill;
|
938
|
+
global.btoa = (str) => Buffer2.from(str, "binary").toString("base64");
|
939
|
+
global.atob = (b64Encoded) => Buffer2.from(b64Encoded, "base64").toString("binary");
|
940
|
+
var Magic = createSDK(SDKBaseReactNative, {
|
941
|
+
platform: "react-native",
|
942
|
+
sdkName: "@magic-sdk/react-native-bare",
|
943
|
+
version: "30.4.0",
|
944
|
+
bundleId: getBundleId(),
|
945
|
+
defaultEndpoint: "https://box.magic.link/",
|
946
|
+
ViewController: ReactNativeWebViewController,
|
947
|
+
configureStorage: (
|
948
|
+
/* istanbul ignore next */
|
949
|
+
async () => {
|
950
|
+
const lf = localForage.createInstance({
|
951
|
+
name: "MagicAuthLocalStorageDB",
|
952
|
+
storeName: "MagicAuthLocalStorage"
|
953
|
+
});
|
954
|
+
const driver = driverWithoutSerialization();
|
955
|
+
await Promise.all([lf.defineDriver(driver), lf.defineDriver(memoryDriver)]);
|
956
|
+
await lf.setDriver([driver._driver, memoryDriver._driver]);
|
957
|
+
return lf;
|
958
|
+
}
|
959
|
+
)
|
960
|
+
});
|
961
|
+
export {
|
962
|
+
Magic,
|
963
|
+
useInternetConnection
|
964
|
+
};
|
2
965
|
//# sourceMappingURL=index.js.map
|