1let currentDomain = self.location.origin; 2let availableDomains = []; 3let currentScope = '/'; 4const apiUrl = 'api/public/health'; 5 6const logs = { 7 "0001": "Checking domain availability..., current domain: {0}", 8 "0002": "Heartbeat lost. Last heartbeat was {0} seconds ago.", 9 "0003": "Current domain {0} is still available", 10 "0004": "try to switch to new domain...", 11 "0005": "switchToNewDomain", 12 "0006": "Switching to new domain: {0}", 13 "0007": "No available domain found", 14 "0008": "Activating fallback mode with {0} clients", 15 "0009": "Switching from {0} to {1}", 16 "0010": "Already on domain {0}, no need to switch.", 17 "0011": "Checking client: {0}", 18 "0012": "Navigated client to {0}", 19 "0013": "Failed to navigate client: {0}", 20 "0014": "Finished switching to {0}", 21 "0015": "Error updating manifest:", 22 "0016": "Fetching failed:, url: {0}", 23 "0017": "Error fetching domain list:{0}", 24 "0018": "domain list:{0}", 25 "0019": "switchMessage error as did not have any clients or available domains", 26 "0020": "indexedDB is not exist, before create it need install our app first", 27 "0021": "activate after caches.open", 28 "0022": "get newUrl & params with {0}", 29 "0023": "navigate to online.html, newUrl: {0}", 30 "0024": "openWindow to online.html as not support navigate, newUrl: {0}", 31 "0025": "activate init worker", 32 "0026": "createDynamicOnlinePage", 33 "0027": "User is offline", 34}; 35 36// å建ç»ä¸çæ¥å¿å½æ° 37const logger = (level, key, ...args) => { 38 if (logs[key]) { 39 const message = logs[key].replace(/\{(\d+)\}/g, (match, index) => args[index] || ''); 40 console[level](`[${key}] ${message}`); 41 } 42}; 43 44// 使ç¨ç»ä¸çæ¥å¿å½æ° 45const log = (key, ...args) => logger('log', key, ...args); 46const error = (key, ...args) => logger('error', key, ...args); 47 48 49async function getKeyFromDb(id, resolve, reject) { 50 const store = await openDb(); 51 const getRequest = store.get(id); 52 getRequest.onsuccess = () => resolve([[id], getRequest.result]); 53 getRequest.onerror = (e) => reject(e.target.error); 54} 55 56async function setKeyToDb(id, value) { 57 return new Promise((resolve, reject) => { 58 openDb().then((store) => { 59 const putRequest = store.put(value, id); 60 putRequest.onsuccess = () => resolve(true); 61 putRequest.onerror = (event) => reject(event.target.error); 62 }); 63 }); 64} 65 66async function openDb() { 67 return new Promise((resolve, reject) => { 68 const request = indexedDB.open("_ionicstorage", 2); 69 request.onerror = (event) => reject(event.target.error); 70 request.onsuccess = (event) => { 71 const db = event.target.result; 72 const transaction = db.transaction(["_ionickv"], "readwrite"); 73 const store = transaction.objectStore("_ionickv"); 74 resolve(store); 75 }; 76 request.onupgradeneeded = (event) => { 77 const db = event.target.result; 78 if (!db.objectStoreNames.contains("_ionickv")) { 79 db.createObjectStore("_ionickv"); 80 } 81 }; 82 }); 83} 84 85async function useStore(list) { // æ¹éä» indexedDB ä¸è·åæ°æ® 86 const res = await Promise.all(list.map((id) => new Promise((resolve, reject) => getKeyFromDb(id, resolve, reject)))); 87 try { 88 return Object.fromEntries(res); 89 } catch (e) { // å ¼å®¹æ§å¤ç 90 const obj = {}; 91 res.forEach(([key, value]) => { 92 obj[key] = value; 93 }); 94 return obj; 95 } 96 97} 98function setParamsToUrlParamsarams(params) { 99 try { 100 return Object.entries(params).map(([key, value]) => `${key}=${value}`).join('&'); 101 } catch (e) { // å ¼å®¹æ§å¤ç 102 const str = ''; 103 for (const key in params) { 104 str += `${key}=${params[key]}&`; 105 } 106 return str; 107 } 108} 109
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.